我有一个php脚本,它启动三个exec()命令并获得它们各自的pids。
我想等待所有三个exec命令都停止运行,然后再转到下一批三个命令。
我尝试过在do while循环中检查每个pid,但它似乎从未离开过循环:它只是一直在那里,直到脚本超时。
以下是我尝试的简化版本:
do {
$pid = 722;
print "checking";
exec("ps -p $pid", $output);
$count = count($output);
} while ( $count >= 2 );
print "out of do while";有没有人知道是什么原因导致它永远不会出现在循环中?
发布于 2010-12-11 23:52:27
PHPs exec只是不断地追加到数组中,因此计数只会增加。要覆盖输出数组,请在调用exec之前调用unset($output)。
有关更多详细信息,请参阅php manual on exec。
发布于 2010-12-11 23:52:09
如果存在输出参数,则将使用命令的每一行输出填充指定的数组。此数组中不包括尾随空格,例如\n。exec注意,如果数组已经包含了一些元素,()将追加到数组的末尾。如果不希望该函数追加元素,请在将数组传递给exec()之前对其调用unset()。
来自exec() manual。
https://stackoverflow.com/questions/4417486
复制相似问题