【发布时间】:2014-01-15 15:23:21
【问题描述】:
我在调用脚本时使用 subprocess.call 时遇到问题,而脚本又会运行后台进程。
我正在从 python 脚本调用 bash 脚本。 蟒蛇2.7.3。
#!/bin/python
from subprocess import call
.
.
call(["run_exp",file_name])
print "exp complete!"
.
.
run_exp 是一个在后台运行进程的 bash 脚本。
#!/bin/bash
.
.
run_task auto_output 2>/dev/null &
.
.
echo "run_exp finished!"
run task 命令是另一个 bash 脚本。这总是在run_exp 完成时完成。
从命令行运行run_exp 我看到了预期的行为并且所有进程都完成了。
当我使用 python call 调用 run_exp 命令时出现问题。使用call 时,我看到输出“run_exp 完成!”但永远不要“exp完成!”。如果我从run_exp 中删除run_task 操作(以及与其在run_exp 中的操作相关的代码),call 命令将按预期运行完成。这让我相信当调用的脚本在后台运行进程时使用call 会出现问题。
谁能解释为什么会发生这种情况。 谢谢!
【问题讨论】:
标签: python subprocess background-process