我有一个php脚本,其中包含正在运行的以下命令:

exec("pgrep -fl ./build-dh", $output, $return);

如果pgrep没有发现“../build dh”进程正在运行,它通常返回“1”,但是,它总是返回“0”,即使我确定该进程没有运行。
以下是我从$output得到的信息:
Array ( [0] => 28560 sh -c pgrep -fl ./build-dh )

这意味着它正在输出它自己的PID,我猜不管发生什么,它都会强制返回一个“0”的代码。当我在shell中运行以下命令时,它工作正常:
$pgrep -fl ./build-dh
$echo $?
1

所以回报率很好…当我运行这个:
 $pgrep -f nginx
11192
11193
11194
11195
11196
$echo $?
0

如何在php中使其正常工作?
谢谢

最佳答案

幸运的是,从exec修复$output$result不需要太多时间,就可以更接近于您在cli中得到的结果:

foreach($output as $oi=>$o) if(strpos($o,'pgrep')!==false) unset($output[$oi]);
$return = !count($output);

10-06 05:25