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

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

Восстановить пароль Регистрация
 
KSTU
9 / 10 / 3
Регистрация: 25.04.2011
Сообщений: 47
29.11.2011, 12:14     Не создается процесс #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;
}
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 12:14     Не создается процесс
Посмотрите здесь:

Есть процесс A и дочерний процесс B, который находит хэндл родительского процесса A. И этот хэндл в разных случаях РАЗНЫЙ! Почему? C++
C++ Не создается объект
C++ Не создается файл с данными
C++ Не создается переменная
C++ Не создается проект
C++ Процесс А инициализирует массив случайными значениями и записывает их в файл, а затем запускает процесс Б
C++ Не создается файл в каталоге
C++ / SFML, не создается .exe C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HCK
 Аватар для 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);
Попробуй так
Yandex
Объявления
29.11.2011, 12:28     Не создается процесс
Ответ Создать тему
Опции темы

Текущее время: 06:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru