2

Мое смутное и интуитивное понимание состоит в том, что Ctrl+C убивает процесс, который в данный момент выполняется в выбранном окне.

Я, однако, запутываюсь из-за разницы в том, какой процесс уничтожается при вызове исполняемого файла и когда используется интерпретатор.

переводчик

Когда я использую переводчика. Например, если я открываю R на терминале, я вижу один процесс, который CMD (по вызову ps) является R Однако когда я использую Ctrl+C , процесс R не уничтожается, а процесс, выполняющийся в R уничтожается.

исполнимый

Когда я вызываю exectuable, я вижу один процесс, который CMD (по вызову ps) является <nameOfExecutable> . Когда я делаю Ctrl+C, этот процесс прекращается.

Вопрос

Кажется, что существует какая-то иерархия процессов (и может быть правильная семантика, чтобы ссылаться на нее). Что именно делает Ctrl+C в свете этой кажущейся иерархии процессов?


Для вашей информации я использую Терминал 2.6.1 в Mac OS X 10.11.3

1 ответ1

1

Я не уверен, но ctrl + c должен отправить сигнал SIGINT для запуска процесса. Обычно программы не имеют собственного обработчика для этого сигнала, и выполняется действие по умолчанию (программа убита). Я предполагаю, что интерпретатор перехватывает этот сигнал и просто прекращает выполнение запущенного скрипта.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .