Кто-либо может сказать мне различие между ctrl+z и ctrl+c?
Когда я нахожусь в терминале, оба, которые комбинации останавливают текущий процесс, но каково точно различие между обоими?
Если оставить крайние случаи в одну сторону, разница проста. Control + C почти сразу прерывает работу приложения, в то время как Control + Z переводит его в фоновый режим, приостанавливает.
Shell send различные сигналы для базовых приложений в этих комбинациях:
Control + C (управляющий символ intr
) отправляет SIGINT, который прерывает работу приложения. Обычно это приводит к прерыванию, но это зависит от приложения.
Control + Z (управляющий символ susp
) отправляет SIGTSTP в приложение переднего плана, эффективно поместил его в фоновый режим, приостановил. Это полезно, если вам нужно выйти из чего-то вроде редактора, чтобы взять необходимые данные. Вы можете вернуться в приложение, запустив fg
(или % x
, где x
- номер задания, как показано в jobs
).
Мы можем проверить это, запустив nano TEST
,затем нажмите Control + Z и запустите ps aux | grep ТЕСТ
. Это покажет нам, что процесс nano
все еще выполняется:
oli 3278 0,0 0,0 14492 3160 точек / 4 T 13:59 0:00 nano TEST
Далее, мы можем видеть (из того T, который находится в столбце состояния), что процесс был остановлен . Итак, он все еще жив, но не работает ... Его можно возобновить.
Некоторые приложения будут аварийно завершены, если у них есть текущие внешние процессы (например, веб-запрос), которые могут отключиться по таймауту, пока они спят.
Control + Z приостанавливает процесс ( SIGTSTP
) и Control + C прерывает процесс ( SIGINT
)
http://en.wikipedia.org/wiki/Control-Z
В Unix-подобных системах Control + Z является наиболее распространенным отображением клавиатуры по умолчанию для последовательность клавиш, которая приостанавливает процесс
http://en.wikipedia.org/wiki/Control-C
В системах POSIX последовательность заставляет активную программу получать сигнал SIGINT. Если программа не указывает, как обрабатывать это условие, она прекращается. Обычно программа, которая обрабатывает SIGINT, все равно завершает свою работу или, по крайней мере, завершает выполнение задачи внутри нее
Это должно помочь
Ctrl + Z используется для приостановки процесса, посылая ему сигнал SIGSTOP, который не может быть перехвачен программой. В то время как Ctrl + C используется для уничтожения процесса с помощью сигнала SIGINT и может быть перехвачен программой, чтобы она могла очистить себя перед выходом или не выйти вообще.
, когда вы нажимаете ctrl + c , это означает, что вы отправляете SIGINT своему процессу. как вы набираете эту команду: kill -SIGINT
. Это убьет ваш процесс. Поэтому вы не можете увидеть его, когда выполните команду ps .
Когда вы нажимаете ctrl + z , это означает, что вы отправляете SIGSTOP вашему процессу. как вы набираете эту команду: kill -SIGKSTOP
. Это остановит ваш процесс, но процесс все еще жив. Таким образом, вы можете повторно активировать свой процесс, отправив SIGCONT вашему процессу.
Ctrl + C используется для уничтожения процесса с помощью сигнала SIGINT
, другими словами, это вежливо ] kill .
Ctrl + Z используется для приостановки процесса, отправив ему сигнал SIGTSTP
, который похож на сигнал сна, который может быть отменено, и процесс может быть возобновлен снова.
Однако, когда процесс приостановлен, мы можем возобновить его снова с помощью fg
(возобновить на переднем плане) и bg
(возобновить в фоновом режиме) , но я не могу возобновить остановленный процесс, это разница между использованием Ctrl + C и Ctrl + Z .
Как мы можем просмотреть приостановленные процессы?
Команда jobs
выдает следующий результат:
[1]- Stopped cat
[2]+ Stopped vi
Как убить приостановленный процесс в фоновом режиме?
Используя команду kill
:
kill% n
, где [11895 33] n - это номер, отображаемый командой jobs
. Итак, если я хочу убить кота: kill% 1
.
Поставить это просто:
CTRL - C запрашивает, чтобы программа прервала .
CTRL - Z заставляет программу выполнять приостановить и перейти в фоновый режим .
Это позволяет вам возобновить его позже с помощью команды fg
. Оставшиеся фоновые задачи удаляются при выходе из оболочки входа.