[英]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.