当前位置: 首页 > 面试题库 >

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

姚建树
2023-03-14
问题内容

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

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

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


问题答案:

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

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


 类似资料:
  • 问题内容: 我想知道如何“杀死”已启动的过程。我知道Process API,但是不确定,是否可以使用它来杀死已经运行的进程,例如firefox.exe等。如果可以使用Process API,可以请您指向正确的方向?如果没有,还有哪些其他可用选项?谢谢。 问题答案: 如果你从Java应用程序中以从头开始处理(例如,通过调用或),那么你将对其具有有效的引用,并且可以在Process类中调用该方法以终止

  • 问题内容: 我正在做一个漂亮的小功能: 问题是那不是正确的PID。似乎总是比正确的PID低1。例如,它说该进程始于31729,但是说它正在31730运行。每次我尝试将其关闭1。我猜它返回的PID是 当前 进程的PID ,而不是启动的PID ,并且新进程获得的“下一个” pid为高1。在这种情况下,我不能仅仅依靠返回值,因为我不能保证它总是正确的。 为什么不返回新流程的PID,如何实现所追求的行为?

  • 问题内容: 我需要制作一个从用户获取以下内容的脚本: 1)进程名称(在Linux上)。 2)此进程写入的日志文件名。 它需要终止该进程并确认该进程已关闭。将日志文件名更改为带有时间和日期的新文件名。然后再次运行该过程,确认它已启动,以便继续写入日志文件。 先谢谢您的帮助。 问题答案: 您可以使用以下命令检索给定名称的进程ID(PID): 希望这可以帮助

  • 我试图在我的Android应用程序中执行ping命令,并能够取消它/发送中断信号。基本上,我希望在任何普通的linux中,当你发送ctrl c到ping时,都能得到ping统计数据。我读过Send Ctrl-C to process open by Java,但它针对的是Windows平台,而tbh似乎有点过头了。我执行命令的代码(我使用的是rxjava): 以及开始/取消: 到目前为止,我试图终

  • 问题内容: 我试图在Sublime上为Node.js建立一个构建系统,所以我可以按F7键在打开的文件上调用“节点”。问题在于该过程将永远开放,因此,第二次使用F7时,我会获得一个加载项。 有没有办法可以杀死来自node.js的打开的“ node.exe”进程? 问题答案: 使用以下命令集来标识在给定端口上运行的进程并从命令行终止该进程 它将输出类似于以下所示的详细信息 然后使用 终止该过程。使用再

  • 我正在尝试为Node建立一个构建系统。js在sublime上,所以我可以按F7在打开的文件上调用“节点”。问题是,该过程将永远打开,因此,第二次使用F7时,我将使用一个外接程序。 有没有办法杀死node.js?打开的“node.exe”进程