1
execute_sleep.pyサブプロセスpopenの:信号が伝播しない
import os
import time
import subprocess
sleep_script = 'sleep_forever.py'
child = subprocess.Popen(sleep_script,
shell=True,
close_fds=True,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
)
subout = child.communicate()[0]
print subout
rc = child.returncode
sleep_forever.pyは
#!/usr/bin/python
import time
while True:
time.sleep(1)
私はexecute_sleep.pyを実行し、kill -TERM -- -<pid of execute_sleep.py>
、 execute_sleep.pyは死ぬが、sleep_forever.pyを実行し続けます。
私は、execute_sleep.pyが信号を受け取ったときにsleep_forever.pyに伝播するようにするにはどうすればよいですか?
これらのオプションは信号をブロックしますか?
shell=True
close_fds=True
subprocess.PIPE
シグナルを処理したくない(?)。私はちょうどそれが伝播したい。それは、処理される信号を受信していないように見えます。親プロセスが明示的に信号をゲートダウンする必要があると言っていますか? -_- – ealeon
はい、孤立した子プロセスを作成したので、それ以外の場合は伝播するために信号を処理する必要があります。プロセスは現在独立しているからです。 – Ilhicas
オハイオ州私は、彼らが同じプロセスグループに属している(そして彼らが同じグループ、親プロセスと子プロセスにある)と思った場合、シグナルは自動的に伝搬されます。私は仮定が間違っていると思いますか? – ealeon