【发布时间】:2013-05-16 17:02:48
【问题描述】:
Python 提供了两个方便的函数来调用可能失败的子进程,subprocess.check_call 和 subprocess.check_output。基本上,
subprocess.check_call(['command', 'arg1', ...])
将指定的命令生成为子进程、阻塞,并验证子进程是否成功终止(返回零)。如果不是,它会抛出异常。 check_output 做同样的事情,除了它捕获子进程的标准输出并将其作为字节字符串返回。
这很方便,因为它是一个单独的 Python 表达式(您不必通过几行代码来设置和控制子流程),并且没有忘记检查返回值的风险。
check_call 和 check_output 的惯用 Ruby 等价物是什么?我知道 $? 全局变量会给出进程的返回值,但这会很尴尬——重点是有例外是您不必手动检查错误代码。 There are numerous ways to spawn a subprocess in Ruby,但我没有看到任何提供此功能的产品。
【问题讨论】:
标签: python ruby process subprocess pipe