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

Fra*_*mer 7 php linux kill popen

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

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

我想我可以做一些kludgey并尝试使用某种命令行hackery将pid捏到输出中...

Fra*_*mer 8

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

$s = proc_get_status($p);
posix_kill($s['pid'], SIGKILL);
proc_close($p);
Run Code Online (Sandbox Code Playgroud)

  • 请访问http://www.php.net/manual/zh/function.proc-terminate.php#81353,因为您需要杀死所有子进程(如果有的话)。 (2认同)