Я запутался с закрытием терминальных приложений в OS X. Почему процессы не закрываются после закрытия терминального приложения? Например, я вызываю интерпретатор python, затем закрываю его с помощью ctrl+z, и когда я пытаюсь закрыть терминал, он спрашивает меня о запуске процессов python. Извините за русский на скриншоте, но вы можете видеть 2 процесса Python (я назвал его два раза).

Скриншот терминала OS X

Это очень раздражает, особенно когда вы работаете с последовательным портом, используя, например, Minicom. Вы должны убить процесс вручную после каждого вызова. Есть ли способ убить их автоматически?

1 ответ1

3

Когда вы нажимаете Ctrl+z, вы отправляете сигнал SIGTSTP ("остановка терминала") процессу, который в данный момент выполняется на переднем плане. Это заставляет процесс приостанавливать свою работу, однако процесс все еще остается в памяти.

Вы можете возобновить приостановленный процесс с помощью команд fg (на переднем плане) или bg (на заднем плане).

Чтобы убить процесс, вам нужно отправить сигнал SIGINT ("прерывание"), который вы можете сделать, нажав Ctrl+c или SIGKILL из другого процесса (kill -s SIGKILL <pid>).

Почему процессы не убиваются после закрытия приложения терминала?

Они на самом деле убиты, и вы видите предупреждение о том, что приостановленные процессы будут убиты при закрытии приложения.

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