php的系统执行运算符

时间:2011-03-18 04:23:06

标签: php system exec

感兴趣的是你们的专业人士在不久前遇到执行操作员的想法并且认为它看起来/使用更简洁,更清晰但是使用执行操作符或内置php函数(例如exec)之间存在差异()或system()从未见过以前使用过吗?

//execution operator
<?php 
    echo '<pre>'; 
    echo `netstat -a`;
    echo '</pre>'
?>



<?php 
echo '<pre>'; 
echo  system('netstat -a');
echo '</pre>'
?>

3 个答案:

答案 0 :(得分:1)

反引号运算符与shell_exec相同。不同的system / exec / shell_exec / passthru等命令之间存在一些差异,有关详细信息,请参阅the manual。如果您要查找的是shell_exec的行为,则反引号运算符就可以了。

答案 1 :(得分:1)

完全取决于它的用途。

如果它只是一个快速的shell到另一个程序,你只需要它打印到stdout,那么反引号是好的。 @ deceze的帖子描述了它的工作原理。

但是如果你需要与其他程序进行更强大的互动,那么没有什么比proc_open好。在使用程序的stdinstdoutstderr时,它可让您充分发挥streams的强大功能。

答案 2 :(得分:1)

PHP中的

exec()有点用词不当。实际的系统调用将终止正在运行的程序,并通过执行其他操作来替换它。但PHP在幕后进行分叉,因此它与system()几乎完全相同。

行为上的差异是system不会缓冲结果。但是你很少会注意到PHP中的内容,因为无论如何你都会得到完整的结果。它仅对CLI应用程序最重要。

对于较低级别的C背景:Difference between "system" and "exec" in Linux?