如何在不捕获输出的情况下从exec获得返回值?


How can I get the return value from exec without capturing the output?

在调用exec()时,我想捕获调用的返回值,但我对输出本身不感兴趣。exec()提供了两个可选参数,通过引用传递,它们将分别由输出和返回值填充。

我可以这样做,忽略$output:

exec($command, $output, $return_value);

但是如果有很多输出呢?我不想在$output填满时耗尽内存。

我想也许我可以这样做,但很明显,通过引用传递字面量是无效的,我很快就发现了:

exec($command, null, $return_value);

所以现在我在想,有没有办法解决这个问题?

I 可以调整$command的值以在shell级别将输出重定向到/dev/null,这解决了内存使用问题,但如果我无法预测$command的起始值,这不是一个好的解决方案。

Try system (string $command [, int &$return_var])。它将返回状态写入第二个参数,并且只返回不需要赋值的最后一行输出:

system($command, $return_value);