私は2つのPythonスクリプトfoo.py
とbar.py
を持っています。foo.py
は、os.system()
でbar.py
を呼び出します。PythonでシグナルとKeyboardInterruptはどのように処理されますか?
#foo.py
import os
print os.getpid()
os.system("python dir/bar.py")
#bar.py
import time
time.sleep(10)
print "over"
プログラムが正常に終了した場合foo.py
のpidは、123であると言う、それが実行している間、私はkill 123
入力した場合、私は買ってあげる
123
over
を印刷します次の出力
123
Terminated
over
0を押すとCtrlキー - C、それが実行している間、私は
123
^CTraceback (most recent call last):
File "dir/bar.py", line 4, in <module>
time.sleep(10)
KeyboardInterrupt
ような何かを得るでしょう。しかし、それは実行している間、私はkill -SIGINT 123
入力すると、プログラムだけで正常に信号および終了を無視するようです。
123
over
私がkill 123
を入力すると、サブプロセスが影響されることはありません
、と私には思えます。
Ctrl - Cと入力すると、両方のプロセスが終了します。
サブプロセスの実行中にkill -SIGINT 123
と入力すると、シグナルは無視されます。
誰かが私にその動作を説明してもらえますか?
Ctrl - とkill -SIGINT
は同等であると思われますか?
kill 123
と入力すると、サブプロセスが影響を受けないことが保証されますか?
私はUbuntu 14.04を途中で使っています。ありがとう!