Не создаётся процесс через CreateProcess()

188
08 февраля 2018, 17:16

Есть некий процесс с параметрами, который должен корректно запускаться и останавливаться из NT-сервиса. Попробовал два варианта его запуска с помощью CreateProcess().

Вариант 1:

STARTUPINFO si;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
memset(&pi, 0, sizeof(pi));
LPSTR lpPrName = "bash.exe";
LPSTR lpParam = "start_demon.bash";
CreateProcess(lpPrName, lpParam, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

В этом случае GetLastError() возвращает ERROR_ALREADY_EXISTS.

Вариант 2:

STARTUPINFO si;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
memset(&pi, 0, sizeof(pi));
LPSTR lpPrName = "bash.exe";
LPSTR lpParam = "start_demon.bash";
char Cmd[255];
sprintf_s(Cmd, "%s %s", lpPrName, lpParam);
CreateProcess(NULL, Cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

В этом случае процесс вроде как запускается, однако процесса с таким PID'ом я нигде не наблюдаю.

Подскажите, что я делаю не так?

READ ALSO
Как организована память в std::deque?

Как организована память в std::deque?

Для лучшего понимания устройства контейнеров решил их все реализоватьИ вот столкнулся с проблемой на std::deque

189
Как получить значение от виджета?

Как получить значение от виджета?

У меня был вопрос связан с отображением виджетаНо как его переделать чтоб получить значение от виджета ? Сам виджет

194
Массив и многопоточность

Массив и многопоточность

программа запускает 2 потока

152
ifndef, define, endif

ifndef, define, endif

Я не понимаю, то ли я криворук, то ли лыжи не скачут

204