gpt4 book ai didi

c++ - 创建独立进程!

转载 作者:搜寻专家 更新时间:2023-10-31 00:03:54 26 4
gpt4 key购买 nike

我正在尝试从 C++ 中的服务创建进程。这个新进程正在创建为子进程。我想创建一个独立进程而不是子进程...

我正在为此使用 CreateProcess 函数。由于我创建的新进程是一个子进程,当我尝试在服务级别杀死进程树时,它也在杀死子进程......我不希望这种情况发生。我希望创建的新进程独立于服务运行。

同样的请指教..谢谢..

代码

STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si); // Start the child process.
ZeroMemory( &pi, sizeof(pi) );
si.dwFlags = STARTF_USESHOWWINDOW;

if(bRunOnWinLogonDesktop)
{
if(csDesktopName.empty())
si.lpDesktop = _T("winsta0\\default");
else
_tcscpy(si.lpDesktop, csDesktopName.c_str());
}

if(bHide)
si.wShowWindow = SW_HIDE; /* maybe even SW_HIDE */
else
si.wShowWindow = SW_SHOW; /* maybe even SW_HIDE */



TCHAR szCmdLine[512];
_tcscpy(szCmdLine, csCmdLine.c_str());

if( !CreateProcess( NULL,
szCmdLine,
NULL,
NULL,
FALSE,
CREATE_NEW_PROCESS_GROUP,
NULL,
NULL,
&si,
&pi ) )

最佳答案

关闭子进程的线程和进程处理程序后,它在 Process Explorer 中仍然是子进程,但结束父进程不会导致子进程终止。

CreateProcess( NULL,
szCmdLine,
NULL,
NULL,
FALSE,
CREATE_NEW_PROCESS_GROUP,
NULL,
NULL,
&si,
&pi );
if(pi.hThread)
CloseHandle(pi.hTread);
if(pi.hProcess)
CloseHandle(pi.hProcess);

我在 sources of cmd.exe 中找到了这个决定的 ReactOS , 在执行 'start' 命令的过程中。

关于c++ - 创建独立进程!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5177140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com