Если мы оставим крайние случаи в стороне, разница будет простой. Control+C прерывает приложение почти сразу, в то время как Control+Z отодвигает его на задний план, приостанавливает.
Оболочка посылает различные сигналы базовым приложениям в этих комбинациях:
Control+C (управляющий символ
intr
) отправляет SIGINT, который прервет работу приложения. Обычно это приводит к прерыванию, но решение об этом принимает приложение.-
Control+Z (управляющий символ
susp
) отправляет SIGTSTP приложению переднего плана, фактически переводя его в фоновый режим, приостанавливая работу. Это полезно, если вам нужно вырваться из чего-то вроде редактора, чтобы пойти и получить некоторые необходимые вам данные. Вы можете вернуться в приложение, выполнивfg
(или%x
гдеx
это номер задания, как показано вjobs
).Мы можем проверить это, запустив
nano TEST
, затем нажав Control+Z а потом побежалps aux | grep TEST
. Это покажет намnano
процесс все еще выполняется:oli 3278 0.0 0.0 14492 3160 pts/4 T 13:59 0:00 nano TEST
Далее, мы можем видеть (из этого T, который находится в столбце состояния), что процесс был остановлен. Итак, он все еще жив, но не работает... Это может быть возобновлено.
Некоторые приложения будут аварийно завершаться, если у них есть текущие внешние процессы (например, веб-запрос), которые могут затянуться, пока они находятся в спящем режиме.