一尘不染

使用popen()打开杀死进程?

linux

我正在使用popen()打开一个长期运行的过程。对于调试,我想在完成之前终止该过程。调用pclose()只会阻塞直到子项完成。

我如何杀死这个过程?我没有找到任何简单的方法来从popen()返回的资源中获取pid,以便可以向其发送信号。

我想我可以做些杂乱的事情,并尝试使用某种命令行黑客将pid混入输出中…


阅读 516

收藏
2020-06-07

共1个答案

一尘不染

好了,找到了一个解决方案:我改回proc_open()而不是popen()。然后就这么简单:

$s = proc_get_status($p);
posix_kill($s['pid'], SIGKILL);
proc_close($p);
2020-06-07