我想使用os.spawn *函数进行upstart服务调用。在子进程上使用os.spawn的原因是因为os.spawn调用通过一些复杂的调用签名提供了对程序启动方式的更多控制。
我的命令是:
sudo start service/new_service db=tmp
我不确定如何使用os.spawn * function family运行string命令。
答案 0 :(得分:0)
仅 &#39>更多控件' os.spawn
为subprocess
提供的mode
是subprocess
参数 - 但在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))