Почему мы используем ctrl + c / ctrl + x / ctrl + z в терминале?
Почему мы должны использовать все эти ярлыки для выхода из программ в terminal
?
Например:
- Ctrl+C, чтобы выйти
top
- Ctrl+Z, чтобы выйти
man
- Ctrl+X, чтобы выйти
nano
Ctrl+C не предполагает убить программу?
2 ответа
Поскольку это указано в POSIX, норме IEEE для Unix-подобных компьютерных систем.
Проверьте раздел 10.2 - Устройства вывода и типы терминалов спецификации POSIX.1 2008 (самая последняя) для всех доступных ярлыков.
Чтобы добавить к вашему вопросу, это краткое объяснение того, что на самом деле делают эти ярлыки.
Когда вы нажимаете Ctrl- [буква], вы фактически посылаете сигнал процессу. Сигнал - это "флаг", который вы предоставляете процессу, который интерпретируется и связывается с действием.
Ctrl-C отправляет сигнал SIGINT, который приводит к завершению процесса.
Ctrl-Z отправляет SIGTSTP, сигнал, который заставляет процесс приостановить выполнение. В этом случае это возобновимо - попробуйте выполнить команду, которая займет некоторое время, и нажмите Ctrl-Z; вы увидите что-то в строках
[1]+ Stopped [your command]
,Тип
fg
в вашем терминале, и вы увидите процесс возобновления, если он не закончился, прежде чем возобновить его.Ctrl-X, в данном случае, это ярлык, который nano использует для выхода из процесса. Кстати, есть сигнал, связанный с Ctrl-x, но он не связан с nano.
TL; DR Это указано в POSIX.
+z и +c - сигналы оболочки.
Ctrl+Z не убивает программу, он посылает ей сигнал (SIGTSTP) для приостановки. Тип fg
возобновить это. Ctrl+C - еще один сигнал, на этот раз SIGINT завершить. kbd + x - это просто привязка нано ключа.