簡體   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