为了账号安全,请及时绑定邮箱和手机立即绑定

在 exec() 之后用 PHP 杀死一个进程

在 exec() 之后用 PHP 杀死一个进程

PHP
泛舟湖上清波郎朗 2022-09-03 16:59:20
<?php$dira = dirname(__DIR__);$output = exec($dira . "\\htdocs\\PocketMine-MP-stable\\start.cmd");echo $output?>我需要找到一种方法来杀死进程后,用exec()启动它,这是为了
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

exec 在进程终止后返回。因此,在执行之后,您无法终止该进程,因为它不再运行。你必须用proc_open运行这个过程,然后你可以用proc_terminate杀死它。

编辑:实际上,如果您将命令的输出重定向到文件并附加到命令的末尾(或使用nohup;Linux只是可能),所以它在后台运行。但是让pid发送杀戮信号只能通过名称来实现,这并不是很可靠&


查看完整回答
反对 回复 2022-09-03
?
温温酱

TA贡献1752条经验 获得超4个赞

您可以使用posix_kill来终止具有标识符 pid 的进程。

用法


//...

exec($dira . "\\htdocs\\PocketMine-MP-stable\\start.cmd", $output);

$pid = (int)$output[0];

$killed = posix_kill(int $pid , int $sig);

您应该使用以下命令查看系统中的所有信号及其代码:kill -l

检查我的 Repl 示例


查看完整回答
反对 回复 2022-09-03
  • 2 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信