Рассмотрим следующую строку кода:
while((n = read(STDIN_FILENO, buff, BUFSIZ)) > 0)
Насколько я понимаю, функции чтения / записи
являются частью небуферизованного ввода-вывода. Значит ли это, что функция read ()
будет читать только один символ за один вызов из stdio? Или, другими словами, значение n будет
-1 in case of error
n = 0 in case of EOF
1 otherwise
Если это не так, когда вернется приведенная выше функция read ()
и почему?
Примечание: я также думал, что read ()
будет ждать, пока успешно не прочитает BUFSIZ
количество символов из стандартного ввода. Но что произойдет, если количество доступных для чтения символов меньше BUFSIZ
? Будет ли читать ждать вечно или пока не появится EOF ( Ctrl + D
в unix или Ctrl + Z
в Windows)?
Также, скажем, BUFSIZ = 100
и stdin = ACtrl + D
(т. е. EOF сразу после одиночного символа). Теперь, сколько раз будет повторяться цикл while
?