В чем разница между Ctrl-z и Ctrl-c в терминале?

Может ли кто-нибудь сказать мне разницу между ctrl + z и ctrl + c?

Когда я нахожусь в терминале, обе комбинации останавливают текущий процесс, но какая именно разница между ними? [ ! d5]

1
задан 17 March 2018 в 05:57

5 ответов

Control + Z приостанавливает процесс (SIGTSTP), а Control + C прерывает процесс (SIGINT)

http://en.wikipedia.org/wiki/Control-Z

В Unix-подобных системах Control + Z является наиболее распространенным по умолчанию клавиатурным отображением для последовательности клавиш, которая приостанавливает процесс

http://en.wikipedia.org/wiki / Control-Z

В Unix-подобных системах Control + Z является наиболее распространенным сопоставлением клавиатуры по умолчанию для последовательности клавиш, которая приостанавливает процесс

13
ответ дан 24 May 2018 в 04:40
  • 1
    Хорошая публикация вакансий. Но, вообще говоря, Википедия не очень хороший источник для технических ссылок. – Aaron 13 August 2014 в 19:14
  • 2
    @ BryceAtNetwork23, что очень верно; Я чувствовал, что в этом случае определение Википедии было достаточно приличным. Я буду искать дополнительные технические ссылки в будущем, хотя! – Sleep Deprived Bulbasaur 13 August 2014 в 19:16

Ctrl + C используется для уничтожения процесса с сигналом SIGINT, другими словами, это вежливое убийство.

Ctrl + Z используется для приостановки процесса отправив ему сигнал kill , который подобен сигналу сна, который можно отменить, и процесс может быть возобновлен снова.

Однако, когда процесс приостанавливается, мы можем возобновить это снова fg (resume in forground) и bg (resume in background), но я не могу возобновить убитый процесс, то есть разницу между использованием Z + C & amp; Ctrl + Z.

Как просмотреть приостановленный процесс?

С помощью команды jobs вывод будет:

[1]-  Stopped                 cat
[2]+  Stopped                 vi

Как просмотреть [ ! d14] приостановленный процесс в фоновом режиме?

Используя команду kill:

kill% n, где n будут отображаться в команде заданий, поэтому я хочу убить cat: kill %1.

8
ответ дан 24 May 2018 в 04:40
  • 1
    в соответствии с другими комментариями в этой теме, коррекция: ctrl-z посылает сигнал SIGTSTP не SIGSTOP. – lukewendling 19 January 2017 в 07:10
  • 2
    Убить% 1 говорит мне - операция не разрешена. Почему так? благодаря – Satya Prakash 31 October 2017 в 11:30

Это должно помочь

Ctrl + Z используется для приостановки процесса, отправив ему сигнал SIGSTOP, который не может быть перехвачен программой. В то время как Ctrl + C используется для уничтожения процесса с помощью сигнала SIGINT и может быть перехвачен программой, чтобы он мог очистить себя до выхода или вообще не выйти.
6
ответ дан 24 May 2018 в 04:40
  • 1
    Это не совсем правильно. Он отправляет SIGTSTP, который может быть уловлен программой. Существует четыре разных сигнала, которые могут приостанавливать программу SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU. Из них только SIGSTOP не может быть заблокирован. Остальные три используются терминалом для остановки процесса в разных условиях. – kasperd 15 August 2014 в 16:59

, когда вы нажимаете ctrl + c, это означает, что вы отправляете SIGINT в свой процесс. как вы набираете эту команду: kill -SIGINT <your_pid>. Это убьет вас. Вот почему вы не можете увидеть это при вызове команды ps. Когда вы нажимаете ctrl + z, это означает, что вы отправляете SIGSTOP в свой процесс. как вы набираете эту команду: kill -SIGKSTOP <your_pid>. Это остановит ваш процесс, но процесс все еще жив. Таким образом, вы можете повторно активировать свой процесс, отправив SIGCONT в ваш процесс.

3
ответ дан 24 May 2018 в 04:40

Проще говоря:

CTRL-C просит, чтобы программа прерывалась. CTRL-Z заставляет программу приостанавливаться и уходить в фоновый режим. Это позволит вам возобновить его позже с помощью команды fg. Оставшиеся фоновые задачи будут убиты при выходе из оболочки входа.
3
ответ дан 24 May 2018 в 04:40

Другие вопросы по тегам:

Похожие вопросы: