我在背靠背使用多个子进程调用时遇到问题。在
这两个很好:
subprocess.call(["gmake", "boot-tilera"], cwd="/home/ecorbett/trn_fp")
p = subprocess.Popen(["gmake", "run-tilera"], stdout=subprocess.PIPE, cwd="/home/ecorbett/trn_fp")
但是,当我尝试在以下时间之后直接运行此调用时,会出现错误:
^{pr2}$我在里面添加了sleep,因为我需要几秒钟才能运行“./go2.sh”程序。不知道这是否是问题所在。在
有什么建议吗?在
shell脚本在命令行上工作的一个可能原因是shebang行没有正确编写(或者根本没有编写)。请看一个示例,其中脚本可以从命令行工作,但不能作为Python子进程工作:Is this the right way to run a shell script inside Python?
如果您的shell脚本没有指定shebang行,那么它可以从命令行运行,因为在您的环境中设置了$shell,并且脚本将其作为默认值。当从python子进程运行时,python不知道它是什么,并以}有效,因为它是一个二进制程序,而不是shell脚本。使用参数
OSError: [Errno 8] Exec format error
失败。subprocess.call()
到{shell=True
给出了一条指令,可以像在shell中一样解释参数。在但是,在
subprocess.call()
中使用shell=True
,因为在某些情况下它可能不安全:subprocess Python docs。在相关问题 更多 >
编程相关推荐