3

我有一个 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 中正常工作?

谢谢

4

1 回答 1

0

$output幸运的是,修复并$result从 exec 到更类似于您在 CLI 中获得的内容并不需要太多:

foreach($output as $oi=>$o) if(strpos($o,'pgrep')!==false) unset($output[$oi]);
$return = !count($output); 
于 2012-08-03T22:35:08.897 回答