当我按“ctrl + c”时哪个进程被终止?

当我按“ctrl + c”时哪个进程被终止?

我的模糊和直观的理解是Ctrl+C会终止当前在选定窗口上运行的进程。

我通常会对调用可执行文件时和使用解释器时哪个进程被终止的区别感到困惑。

解释器

当我使用解释器。例如,如果我R在终端上打开,我可以看到一个进程CMD(在 调用 时ps)是R。但是当我使用Ctrl+时C,该R进程不会被终止,但正在运行的进程R会被终止。

可执行文件

当我调用可执行文件时,我可以看到一个进程CMD(在调用时ps<nameOfExecutable>。当我执行Ctrl+C时,该进程被终止。

问题

似乎存在某种进程层次结构(并且可能存在正确的语义来指代它)。鉴于这种明显的进程层次结构,Ctrl+究竟起什么作用?C


供您参考,我在 Mac OS X 10.11.3 上使用 Terminal 2.6.1

答案1

我不确定,但ctrl + c应该向正在运行的进程发送SIGINT信号。通常程序没有针对此信号的自定义处理程序,并且会采取默认操作(程序被终止)。我猜解释器会拦截此信号并停止执行正在运行的脚本。

相关内容