<?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發送殺戮信號只能通過名稱來實現,這并不是很可靠&

溫溫醬
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 示例
- 2 回答
- 0 關注
- 190 瀏覽
添加回答
舉報
0/150
提交
取消