Почему для выхода из `cat` необходимы два нажатия ^ D? [дубликат]

Вот что сработало у меня:

1) Откройте терминал

2) sudo dpkg --configure -a

12
09.07.2017, 05:13
1 ответ

Ответ можно найти на справочной странице termios(3):

   VEOF   (004, EOT, Ctrl-D) End-of-file character (EOF).  More precisely:
          this character causes the pending tty buffer to be sent  to  the
          waiting  user program without waiting for end-of-line.  If it is
          the first character of the line, the read(2) in the user program
          returns  0, which signifies end-of-file.  Recognized when ICANON
          is set, and then not passed as input.

Первое нажатие ^Dприводит к тому, что введенная вами строка будет доставлена ​​в cat, поэтому она получает read(2)результат изa(одного символа, без EOL char ). Второй ^Dзаставляет read(2)возвращать 0, что означает EOF для cat.

25
27.01.2020, 19:54

Теги

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