我在Windows上执行了以下测试代码:
import multiprocessing
import time
def child() :
while True :
time.sleep( 2 )
if __name__ == '__main__' :
multiprocessing.Process( target = child ).start()
while True :
time.sleep( 1 )
如果我在Ctrl-C
工作时按KeyboardInterrupt
,我会看到两个 sleep( 1 )
例外 - 一个用于sleep( 2 )
,另一个用于process
。如何将主process
中的键盘中断转发给子{{1}}?毕竟它们是进程,而不是线程:(。
答案 0 :(得分:1)
当进程catches the SIGINT
signal指示a keyboard interrupt时(按ctrl + c),会抛出KeyboardInterrupt
异常。
在Unix / Linux系统中,SIGINT
信号被发送到整个foreground process group,其中包括父进程及其子进程。