Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
KSTU
9 / 10 / 3
Регистрация: 25.04.2011
Сообщений: 47
#1

Не создается процесс - C++

29.11.2011, 12:14. Просмотров 834. Ответов 1
Метки нет (Все метки)

Вот часть задания:
1. Создать дочерний процесс Child (добавить к рабочей области еще один консольный вид проекта, при создании дочернего процесса отвести ему новую консоль) .
2. В дочернем процессе вывести значение переменной окружения, которую изменили в родительском процессе (для удобства лучше использовать новую переменную окружения, т.е. создать свою).
3. Передать дочернему процессу через командную строку определенные параметры (массив из пяти целых чисел).
4. В дочернем процессе осуществить вывод минимального из переданных параметров из родительского процесса и возврат его, как кода выхода в родительский процесс (для удобства разбора командной строки использовать sscanf.). Родительский процесс ожидает результата (окончания работы дочернего процесса) и выводит его на консоль.


Не могу сделать первый пункт, вроде все правильно написал, а процесс не создается. В чем ошибка?

Также вопрос по 3 и 4 пункту. Как осуществить связь между двумя процессами?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <windows.h>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int __cdecl main( int argc, char *argv[], char *envp[])
{
    STARTUPINFO si = { sizeof(si) };
    PROCESS_INFORMATION pi;
    LPSTR AppName = "Child.exe";
 
    if (
            CreateProcess
            (
                //LPCTSTR lpApplicationName
                NULL,
                //LPSTR lpCommandLine
                AppName,
                //LPSFCURITY_ATTRIBUTES lpProcessAttributes
                NULL,
                //LPSECURITY_ATTRIBUTES lpThreadAttributes
                NULL,
                //BOOL bInheritHandles
                FALSE,
                //DWORD dwCreationFlags
                CREATE_NEW_CONSOLE,
                //LPVOID lpEnvironment
                NULL,
                //LPCSTR lpCurrentDirectory
                NULL,
                //LPSTARTUPINFOA lpStartupInfo
                &si,
                //LPPROCESS_INFORMATION lpProcessInfoemation
                &pi
            )==TRUE
        )
        {
            cout << "process\n";
            cout << "handle " << pi.hProcess << endl;
            _getch();
            TerminateProcess(pi.hProcess,NO_ERROR);
        }
    else
        cout << "error";
    _getch();
 
    return 0;
}
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 12:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не создается процесс (C++):

Процесс А инициализирует массив случайными значениями и записывает их в файл, а затем запускает процесс Б - C++
В универ нужно сделать лабу по выше указанной теме. Мне не нужно чтобы за меня делали - нужен просто совет. Для начала: Задание:...

Есть процесс A и дочерний процесс B, который находит хэндл родительского процесса A. И этот хэндл в разных случаях РАЗНЫЙ! Почему? - C++
Друзья! Вот код A.exe, суть которого просто стать родительским для B.exe и висеть в системе. #include &lt;stdio.h&gt; #include &lt;windows.h&gt;...

Файл не создается - C++
почему не работает созздание файла?где ошибка подскажите пж{string s5,s; char s6; FILE *f; cout&lt;&lt;&quot;ââåäèòå ñîáûòèå ãîäîì...

Не создается переменная - C++
В общем, с указателем *root творится какая-то чушь. Компилятор как-будто не видит его объявление. #include &lt;iostream.h&gt; #include...

Не создается файл - C++
Я написал такой скрипт, я просто тренировался и у меня просто не создается файл, в чем проблема, помогите! Вот код #include &lt;iostream&gt; ...

Не создается папка - C++
Пытаюсь создать папку Так не создает. SHGetSpecialFolderPath(0, ProgramPathName, CSIDL_PROGRAM_FILES, true); ...

1
HCK
44 / 19 / 1
Регистрация: 18.09.2011
Сообщений: 70
29.11.2011, 12:28 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
     STARTUPINFOW siStartupInfo; 
     PROCESS_INFORMATION piProcessInfo; 
     memset(&siStartupInfo, 0, sizeof(siStartupInfo)); 
     memset(&piProcessInfo, 0, sizeof(piProcessInfo)); 
     siStartupInfo.cb = sizeof(siStartupInfo);
 
     if (CreateProcessW(const_cast<LPCWSTR>(FullPathToExe.c_str()), 
                             pwszParam, 0, 0, false, 
                             CREATE_DEFAULT_ERROR_MODE, 0, 0, 
                             &siStartupInfo, &piProcessInfo) != false) 
     { 
          /* Описание процесса. */ 
         dwExitCode = WaitForSingleObject(piProcessInfo.hProcess, (SecondsToWait * 1000)); 
     } 
     else 
     { 
         /* Если ошибка */ 
         iReturnVal = GetLastError(); 
     } 
 
     /* Освобождение памяти */ 
     delete[]pwszParam; 
     pwszParam = 0; 
 
     /* Закрыть хендл */ 
     CloseHandle(piProcessInfo.hProcess); 
     CloseHandle(piProcessInfo.hThread);
Добавлено через 49 секунд
Цитата Сообщение от HCK Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
     STARTUPINFOW siStartupInfo; 
     PROCESS_INFORMATION piProcessInfo; 
     memset(&siStartupInfo, 0, sizeof(siStartupInfo)); 
     memset(&piProcessInfo, 0, sizeof(piProcessInfo)); 
     siStartupInfo.cb = sizeof(siStartupInfo);
 
     if (CreateProcessW(const_cast<LPCWSTR>(FullPathToExe.c_str()), 
                             pwszParam, 0, 0, false, 
                             CREATE_DEFAULT_ERROR_MODE, 0, 0, 
                             &siStartupInfo, &piProcessInfo) != false) 
     { 
          /* Описание процесса. */ 
         dwExitCode = WaitForSingleObject(piProcessInfo.hProcess, (SecondsToWait * 1000)); 
     } 
     else 
     { 
         /* Если ошибка */ 
         iReturnVal = GetLastError(); 
     } 
 
     /* Освобождение памяти */ 
     delete[]pwszParam; 
     pwszParam = 0; 
 
     /* Закрыть хендл */ 
     CloseHandle(piProcessInfo.hProcess); 
     CloseHandle(piProcessInfo.hThread);
Попробуй так
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 12:28
Привет! Вот еще темы с ответами:

Не создается файл - C++
#include &quot;iostream&quot; #include &quot;ctime&quot; #include &quot;cstdlib&quot; #include &quot;string.h&quot; #include &quot;fstream&quot; using namespace std; class...

Не создается объект - C++
Есть абстрактный класс от него 2 наследника. В этом классе есть итератор вершин графа template &lt;class Vertex, class Edge&gt; class ABCG { ...

Не создается .exe - C++
Добрый день. Выкидывает вот такую вот ошибку. В коде вроде как ошибок нет. #include &quot;stdafx.h&quot; #include&quot;StdAfx.h&quot; ...

Куда создается файл? - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;Windows.h&gt; #include &lt;iostream&gt; using namespace std; const int MAX =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru