伪代码...如何在C/C++ Win32程序中终止以_spawnl()开头的进程?
processHandle = _spawnl(_P_NOWAIT, "foo.exe", ...);
/* time passes... */
WossnameKillFunction(processHandle);
伪代码...如何在C/C++ Win32程序中终止以_spawnl()开头的进程?
processHandle = _spawnl(_P_NOWAIT, "foo.exe", ...);
/* time passes... */
WossnameKillFunction(processHandle);
有没有终止对应于VC++函数_spawnl()
,但它返回一个Win32 HANDLE
,您可以使用:
HANDLE handle = (HANDLE)_spawnl(...);
TerminateProcess(handle, exit_code);
注意它只返回一个HANDLE
,如果你与NOWAIT
args来一个叫它。如果不是,它将返回进程的退出代码。
当然,如果能以某种方式与流程进行交流,它应该优雅地退出,那就好多了。 TerminateProcess
将阻止任何清理代码被调用。
(而作为一个小侧面说明:尽管MSDN说怎么样spawnl()
被弃用的POSIX的功能,它实际上从来没有在任何POSIX标准,据我知道它来自QNX起源!)
_spawnl
returns the HANDLE
associated with the process。因此,您应该能够使用普通的TerminateProcess function来终止该过程。
为什么不利用Windows程序中的Windows API?如果你想使用POSIX,为什么要提到Windows API? –
两者都是可能的选择。如果这不能用POSIX完成,我打算用适当的Win32 API调用来实现这一点。 – MaxVT