【问题标题】:Does Python's os.system() wait for an end of the process?Python 的 os.system() 是否等待进程结束?
【发布时间】:2011-11-23 17:24:09
【问题描述】:

Python manual 没有说明os.system("cmd") 是否等待进程结束:

引用手册:

在子shell中执行命令(字符串)。

看起来它确实在等待(与 Perl 的 system 的行为相同)。这是正确的吗?

【问题讨论】:

    标签: python


    【解决方案1】:

    是的。调用的返回值为子进程的退出代码。

    【讨论】:

    • py3.x 仍然如此吗? stackoverflow.com/questions/14059558/…
    • 是的,但人们根本不应该使用 os.system。使用 subprocess 包,可能是辅助函数之一:call、check_call、check_output。
    • 在python 3.5 call中,check_call、check_output已经被run函数替换了。
    • @RusselWinder:您为什么不将此添加到您的答案中? - 解释应该如何使用 subprocess 包!
    【解决方案2】:

    手册上没有明确说,但是通过说返回值就是程序的返回值来暗示它等待进程的结束。

    所以要回答你的问题,是的,它确实在等待。

    【讨论】:

      【解决方案3】:

      在 Mac 上它会等待,但在 Linux 上不会(Debian、python 3.7.3)。

      使用subprocess修复:

      import subprocess
      
      subprocess.run("cmd")
      

      【讨论】:

        猜你喜欢
        • 2013-12-03
        • 1970-01-01
        • 2021-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-25
        • 2015-10-25
        相关资源
        最近更新 更多