我正在用creatprocess api创建子进程。并且我创建了一个工作对象并将此子进程分配给了工作对象。
现在,如果我杀了我的父进程,子进程也会终止。但是如果我暂停父进程,子进程不会暂停并继续执行。
当父进程暂停时,是否有任何选项可以暂停子进程?暂停子进程
德尔福代码,我已经用于创建过程
Function ExecuteProcess(EXE : String) : THandle;
Var
SI : TStartupInfo;
PI : TProcessInformation;
Begin
Result := INVALID_HANDLE_VALUE;
FillChar(SI,SizeOf(SI),0);
SI.cb := SizeOf(SI);
If
CreateProcess(nil,PChar('.\'+EXE),nil,nil,False,CREATE_SUSPENDED,
nil,nil,SI,PI) Then
Begin
ResumeThread(PI.hThread);
CloseHandle(PI.hThread);
Result := PI.hProcess;
End
Else ShowMessage('CreateProcess failed: '+
SysErrorMessage(GetLastError));
End;
欢迎提到堆栈溢出。一旦它开始运行,你真的不应该中止任何事情。除非某个线程正在挂起*本身*,否则您并不真正知道线程是否处于挂起状态的安全状态。例如,它可能处于IO操作的中间,或者它可能在内存管理器上存在锁定。无论你想解决什么问题,我建议你找到一个不同的解决方案。如果你能描述你的问题,你可以在Stack Overflow上发布。 – 2012-01-11 22:22:21
嗨。我的问题是,我开发了一个安全应用程序,此应用程序使用硬件进行一些操作,如果出现问题,它将终止它创建的进程。我的问题是,如果我暂停使用进程资源管理器的主进程,我创建的进程继续执行,并且我的主应用程序对它们失去控制。我无法执行安全控制。而子进程不是由我开发的,我没有它们的源代码。 – galove 2012-01-12 06:54:48
我的意思是你在新的问题文章中描述你的问题。不过,我不明白你的问题。你还没有告诉你为什么要暂停进程。 – 2012-01-12 12:56:40