【问题标题】:php's system execution operatorphp的系统执行操作符
【发布时间】:2011-07-17 21:51:03
【问题描述】:

只是对您的专业人士的想法感兴趣,因为我不久前遇到了执行运算符,并认为它更简洁明了,但使用执行运算符或内置 php 函数(如 exec)之间有区别吗() 或 system() 以前从未见过?

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



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

【问题讨论】:

    标签: php system exec


    【解决方案1】:

    反引号运算符与shell_exec 相同。不同的system/exec/shell_exec/passthru等命令有一些区别,具体请参考the manual。如果您要查找的是shell_exec 的行为,则反引号运算符就可以了。

    【讨论】:

      【解决方案2】:

      这完全取决于它的用途。

      如果它只是对另一个程序的快速外壳,并且您只需要它打印到标准输出的内容,那么反引号就可以了。 @deceze 的帖子详细描述了它的工作原理。

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

      【讨论】:

      • 是的,因为我在玩它时制作了一个简单的远程命令脚本,并想知道为什么人们会使用复杂的管道和流等,所以对于一个将结果输出回浏览器的简单命令就足够了。谢谢
      【解决方案3】:

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

      一个不同的行为是system 不缓冲结果。但是您很少会在 PHP 中注意到这一点,因为无论如何您都会得到完整的结果。它仅对 CLI 应用程序很重要。

      底层C后台:Difference between "system" and "exec" in Linux?

      【讨论】:

        猜你喜欢
        • 2010-10-17
        • 1970-01-01
        • 2019-05-13
        • 1970-01-01
        • 1970-01-01
        • 2014-04-14
        • 1970-01-01
        • 2018-02-02
        • 2010-12-01
        相关资源
        最近更新 更多