Есть некий процесс с параметрами, который должен корректно запускаться и останавливаться из 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'ом я нигде не наблюдаю.
Подскажите, что я делаю не так?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Для лучшего понимания устройства контейнеров решил их все реализоватьИ вот столкнулся с проблемой на std::deque
У меня был вопрос связан с отображением виджетаНо как его переделать чтоб получить значение от виджета ? Сам виджет