繁体   English   中英

如何在 C/C++ Win32 程序中终止以 _spawnl() 启动的进程?

[英]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。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM