c-创建独立的流程!
作者:互联网
我试图从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);
我已经在执行“开始”命令的过程中的ReactOS的sources of cmd.exe中找到了此决定.
标签:c,winapi,createprocess 来源: https://codeday.me/bug/20191011/1894204.html