我正在使用popen()打开一个长期运行的过程。对于调试,我想在完成之前终止该过程。调用pclose()只会阻塞直到子项完成。
我如何杀死这个过程?我没有找到任何简单的方法来从popen()返回的资源中获取pid,以便可以向其发送信号。
我想我可以做些杂乱的事情,并尝试使用某种命令行黑客将pid混入输出中…
好了,找到了一个解决方案:我改回proc_open()而不是popen()。然后就这么简单:
proc_open()
popen()
$s = proc_get_status($p); posix_kill($s['pid'], SIGKILL); proc_close($p);