[英]How do I terminate a process started with _spawnl() in a C/C++ Win32 program?
在伪代码...
processHandle = _spawnl(_P_NOWAIT, "foo.exe", ...);
/* time passes... */
WossnameKillFunction(processHandle);
VC++ function _spawnl()
没有终止对应项,但它确实返回您可以使用的 Win32 HANDLE
:
HANDLE handle = (HANDLE)_spawnl(...);
TerminateProcess(handle, exit_code);
请注意,如果您使用NOWAIT
参数之一调用它,它只会返回HANDLE
。 如果不是,它将返回进程的退出代码。
当然,如果你能以某种方式与进程沟通,让它优雅地退出,那就更好了。 TerminateProcess
将阻止调用任何清理代码。
(作为一个小注解:尽管 MSDN 说spawnl()
是已弃用的 POSIX function,但它实际上从未出现在任何 POSIX 标准中。据我所知,它起源于 QNX。)
_spawnl
返回与进程关联的HANDLE
。 因此,您应该能够使用普通的TerminateProcess function 终止进程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.