c/c++语言开发共享C中的popen()和system()有什么区别

我想在我的C代码中执行二进制文件。 执行哪个更好? popen()system()

编辑 :我试图使用system ,但执行过程似乎陷入最后,并没有返回到我的代码。

关于该怎么做的任何建议?

谢谢

    popen()使您可以控制进程的输入或输出文件流。 system()没有。 如果您不需要访问进程的I / O,则可以使用system()来简化。

    system()在C89和C99中; popen()只是Posix(虽然Windows API也有一个)。

    这两个函数都调用某种forms的shell来执行命令(例如Linux上的/bin/sh ,以及Windows上的cmd.exe )。 如果你想直接执行一个可执行文件并且你在Posix上,你也可以使用fork()查看exec* -family函数(因为exec() 取代了当前进程)。

    如果要运行shell命令并希望父进程能够与子进程通信,请使用popen 。 (它将孩子的输入或输出挂钩到你得到的流。)否则,更喜欢exec系列函数(可能与fork一起); exec进程inheritance了大多数打开的文件描述符(包括stdin,stdout和stderr),因此你可以将输入输出挂钩到你喜欢的任何东西……而且,安全隐患更少。

    除非必须运行shell命令,否则通常最好避免使用system 。 它产生一个shell来运行命令,shell可以以任何方式解析命令。 特别是,可以修改某些环境变量(如$IFS和/或$PATH ),以使父进程执行您从未想过的程序。 尽管popen看起来做同样的事情,但它至少提供了在一般情况下值得的function。

      以上就是c/c++开发分享C中的popen()和system()有什么区别相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560653.html

      (0)
      上一篇 2021年1月28日
      下一篇 2021年1月28日

      精彩推荐