當調用腳本進而運行後臺進程時,使用subprocess.call時出現問題。python:調用運行後臺進程的腳本的子進程掛起
我從python腳本調用bash腳本。 python 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 finished!」但從不「完成!」。如果我從run_exp
中刪除run_task
操作(及其相關代碼及其在run_exp
中的操作),則call
命令將按預期運行完成。這導致我相信當調用的腳本在後臺運行進程時,使用call
會出現問題。
任何人都可以闡明爲什麼會發生這種情況。 謝謝!
這似乎工作謝謝。我用選項1.我不知道我是否仍然打開文件描述符,並且即時忽略此問題。任何雖然? – user3198562
如果有效,爲什麼呢? ;-) – Alfe