Почему мы используем ctrl + c / ctrl + x / ctrl + z в терминале? [дубликат]

На этот вопрос уже есть ответ:

Почему мы должны использовать все эти ярлыки для выхода из программ в терминал ?

Например:

  • ctrl + c , чтобы выйти из top
  • ctrl + z , чтобы выйти из man
  • ctrl + x , чтобы выйти из nano

ctrl + c isn ' Не хотите ли убить программу?

5
задан 5 September 2014 в 17:06

2 ответа

Поскольку это указано в POSIX, норме IEEE для подобных Unix компьютерных систем.

Проверьте Раздел 10.2 - Устройства вывода и Терминальные Типы 2008 POSIX.1 (последнее) спецификация для всех доступных ярлыков.

Для составления в целом вопроса это - краткое объяснение того, что на самом деле делают те ярлыки.

Когда Вы нажимаете Ctrl-[буква], Вы на самом деле отправляете сигнал в процесс. Сигнал является "флагом", который Вы предоставляете процессу, который получает interpretated и связанный с действием.

  • Ctrl-C отправляет SIGINT, сигнал, который заставляет процесс завершаться.

  • Ctrl-Z отправляет SIGTSTP, сигнал, это заставляет процесс приостанавливать выполнение. В этом случае это resumable - пытаются выполнить команду, которая будет требовать времени и нажимать Ctrl-Z; Вы будете видеть что-то в строках

    [1]+ Stopped [your command].

    Ввести fg в Вашем Терминале и Вы будете видеть, что процесс возобновляется, если он не закончился прежде, чем возобновить его.

  • Ctrl-X, в этом случае, является использованием нано ярлыка для выхода из процесса. Кстати, существует сигнал, связанный с Ctrl-x, но он не связан с нано.

TL; DR Это указано в POSIX.

10
ответ дан 17 November 2019 в 10:50

+z и +c являются сигналами оболочки.

ctrl + z не закрывает программу, это отправляет ему сигнал (SIGTSTP) для приостановки. Тип fg для возобновления его. ctrl + c является другим сигналом, на этот раз SIGINT для завершения. kbd+x является просто нано привязкой клавиш.

2
ответ дан 17 November 2019 в 10:50

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

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