【发布时间】:2016-06-29 07:53:28
【问题描述】:
我有两个 Python 脚本 foo.py 和 bar.py,foo.py 将通过 os.system() 调用 bar.py。
#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,如果程序正常终止,就会打印出来
123
over
如果我在运行时输入kill 123,我会得到以下输出
123
Terminated
over
如果我在它运行时按 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-C 和 kill -SIGINT 不应该是等效的吗?
如果我输入kill 123 是否保证子进程不会受到影响(如果它恰好正在运行)?
顺便说一句,我在 Ubuntu 14.04 上。谢谢!
【问题讨论】:
标签: python multithreading process signals interrupt