Причина, по которой вы не можете понять, что делает код, заключается в том, что исходный код ужасен - он использует ноль "magi c number" в качестве дескриптора файла, когда он может / должен использовать STDIN_FILENO
, чтобы сделать его легче увидеть, с чего он читает данные.
То, что он может сделать (если чтение не возвращает ошибку), читается со стандартного ввода 10 char
(возможно, ждет, пока вы нажмете клавиши, если подключен к входу терминала); где это возможно (при условии UTF-8, где кодовые точки принимают переменное число байтов), что 10 char
может быть только (например, 3 с половиной символа / кодовой точки.
Конечно, программа завершается после прочитайте, и когда это произойдет (если стандартный вход поступил с входа терминала), вход терминала будет подключен к терминалу после выхода из программы, поэтому любые данные после 10-го char
(который может начинаться с искаженной) последней части многобайтовая кодовая точка ") будет go к терминалу.