2

我在 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例外 - 一个 forsleep( 1 )和一个 for sleep( 2 )。main 中的键盘中断process是如何转发给 child 的process?毕竟它们是进程,而不是线程:(。

4

1 回答 1

1

当进程捕获到表示键盘中断的信号 (按 ctrl+c)KeyboardInterrupt时,将引发异常。SIGINT

在 Unix/Linux 系统中,信号被发送到包括父进程及其子进程SIGINT的整个前台进程组。

于 2013-01-01T22:01:10.903 回答