进程在python中产生

时间:2013-11-19 10:32:18

标签: python python-2.7 process spawn

我想使用os.spawn *函数进行upstart服务调用。在子进程上使用os.spawn的原因是因为os.spawn调用通过一些复杂的调用签名提供了对程序启动方式的更多控制。

我的命令是:

sudo start service/new_service db=tmp

我不确定如何使用os.spawn * function family运行string命令。

1 个答案:

答案 0 :(得分:0)

&#39>更多控件' os.spawnsubprocess提供的modesubprocess参数 - 但在Unix上,这只能控制调用块是否等待子进程完成,这也可以用{{1 }}。

在任何情况下,将命令转换为参数列表的最佳方法是使用subprocess文档建议的shlex.split函数:

command = 'sudo start service/new_sevice db=tmp'
subprocess.call(shlex.split(command))

如果您确实想要使用os.spawn*家庭(并且您可能不会),您也可以使用shlex.split - 它会在表单中显示结果subprocess预计与os.spawn*预期的格式略有不同,但您可以使用spawnl*变体和Python的参数解包来轻松解决这个问题:

os.spawnlp(os.P_WAIT, *shlex.split(command))