无法对子进程进行连续调用

2024-05-28 20:32:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在背靠背使用多个子进程调用时遇到问题。在

这两个很好:

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”程序。不知道这是否是问题所在。在

有什么建议吗?在


Tags: runhome进程stdoutcallsubprocessbootpopen
1条回答
网友
1楼 · 发布于 2024-05-28 20:32:35

shell脚本在命令行上工作的一个可能原因是shebang行没有正确编写(或者根本没有编写)。请看一个示例,其中脚本可以从命令行工作,但不能作为Python子进程工作:Is this the right way to run a shell script inside Python?

如果您的shell脚本没有指定shebang行,那么它可以从命令行运行,因为在您的环境中设置了$shell,并且脚本将其作为默认值。当从python子进程运行时,python不知道它是什么,并以OSError: [Errno 8] Exec format error失败。subprocess.call()到{}有效,因为它是一个二进制程序,而不是shell脚本。使用参数shell=True给出了一条指令,可以像在shell中一样解释参数。在

但是,在subprocess.call()中使用shell=True,因为在某些情况下它可能不安全:subprocess Python docs。在

相关问题 更多 >

    热门问题