Какой процесс погибает, когда я выполняю `ctrl + c`?
Я смутно и интуитивно понимаю, что Ctrl+C убивает процесс, который в данный момент выполняется в выбранном окне.
Я, однако, запутываюсь из-за разницы в том, какой процесс уничтожается, когда вызывается исполняемый файл и когда используется интерпретатор.
переводчик
Когда я использую переводчика. Например, если я открою R
на терминале я вижу один процесс, который CMD
(по вызову ps
) является R
, Когда я использую Ctrl+C, однако, R
процесс не убивается, но процесс работает в R
убит.
исполнимый
Когда я вызываю execuable, я вижу один процесс, который CMD
(по вызову ps
) является <nameOfExecutable>
, Когда я нажимаю Ctrl+C, этот процесс прекращается.
Вопрос
Кажется, что существует какая-то иерархия процессов (и может быть правильная семантика, чтобы ссылаться на нее). Что именно делает Ctrl+C в свете этой кажущейся иерархии процессов?
Для вашей информации я использую Терминал 2.6.1 в Mac OS X 10.11.3
1 ответ
Я не уверен но ctrl + c
должен отправить SIGINT
сигнал к запущенному процессу. Обычно программы не имеют собственного обработчика для этого сигнала, и выполняется действие по умолчанию (программа убита). Я предполагаю, что интерпретатор перехватывает этот сигнал и просто прекращает выполнение запущенного скрипта.