2 回答

TA貢獻(xiàn)1884條經(jīng)驗 獲得超4個贊
您可以在需要時發(fā)送 continue 信號,例如在 end of script_2.
p.send_signal(signal.SIGSTOP)
"""do what you want"""
p.send_signal(signal.SIGCONT)

TA貢獻(xiàn)1840條經(jīng)驗 獲得超5個贊
我知道有點晚了,但以下演示了@Sima 所說的p.send_signal(signal.SIGCONT)將啟動一個暫停的進程。
更新:根據(jù)我理解的評論,您需要讓 script_1 (msg send) 等待 script_2 (login) 完成,然后再繼續(xù)。下面的進程 1 是要發(fā)送消息的 python 腳本,而進程 2 是登錄進程:
import subprocess
import signal
import time
print("Starting")
p = subprocess.Popen("""
for i in `seq 1 12`;
do
echo $i;
sleep 1;
done
""", shell=True)
# Your script_1 controlling script_2 here
print("Process 1: Sleeping")
time.sleep(3)
print("Process 2: Pausing")
p.send_signal(signal.SIGTSTP)
print("Process 1: Sleeping")
time.sleep(3)
print("Process 2: Starting (continue)")
p.send_signal(signal.SIGCONT)
# Your script_1 waiting for script_2 to complete in order to continue
print("Process 1: Waiting on 2 to finish")
time.sleep(3)
# Code from https://stackoverflow.com/q/36596354/3727050
while p.poll() is None:
# Process hasn't exited yet, let's wait some
time.sleep(0.5)
print("Process 1: still waiting...")
print("Process 1 got process 2 exit code: {}".format(p.returncode))
print("Here only Process 1 is running")
輸出是:
$ python ~/tmp/tests.py
Starting
Process 1: Sleeping
1
2
3
Process 2: Pausing
Process 1: Sleeping
Process 2: Starting (continue)
Process 1: Waiting on 2 to finish
4
5
6
7
Process 1: still waiting...
Process 1: still waiting...
8
Process 1: still waiting...
Process 1: still waiting...
9
Process 1: still waiting...
Process 1: still waiting...
10
Process 1: still waiting...
Process 1: still waiting...
11
Process 1: still waiting...
Process 1: still waiting...
12
Process 1: still waiting...
Process 1: still waiting...
Process 1: still waiting...
Process 1 got process 2 exit code: 0
Here only Process 1 is running
請注意,從腳本 2 的退出代碼中,您應(yīng)該能夠檢測登錄是否成功。返回碼為 0 為成功,其他為失敗
添加回答
舉報