Почему мы используем 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 - это просто привязка нано ключа.

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