Может ли функция read () в C привести к переполнению? - PullRequest
0 голосов
/ 13 мая 2019

Если размер буфера массива буферов равен, скажем, 100, и я читаю файл, используя чтение, где я читаю 100 байтов, может ли быть переполнение, так как нет нулевого завершающего байта? Я читаю из файла и затем записываю в стандартный вывод.

int incoming_bytes = read(filedes, buffer, 100);
write(1, buffer, incoming_bytes);

1 Ответ

1 голос
/ 13 мая 2019

read() и write() не работают со строками, но с буферами, и поэтому им не нужно знать их содержимое, только их размер.

Пока вы используете толькобуфер в write в stdout, проблем с переполнением у вас не будет.

'\0' требуется только для строк.

Проблема может возникнуть, если вы позже обработаете этобуфер в виде строки.В этом случае вы, скорее всего, переполните его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...