о системном вызове чтения на c

#c #linux

#c #linux

Вопрос:

когда я использую системный вызов read, буфер, который я предоставляю во втором аргументе, где должны храниться данные от чтения, перезаписывается правильно!?

спасибо, Никос

Комментарии:

1. Да, значения в буфере перезаписаны.

2. Какая ОС? Вы говорите о системном вызове или функции fread из stdio? Если я должен догадаться, о чем вы спрашиваете, то да, буфер перезаписан.

3. я говорил о системном вызове ядра Linux, спасибо за ответы 🙂

Ответ №1:

Да, в этом и заключается смысл read() заполнения (= перезаписи) буфера содержимым, считанным из файла.

Комментарии:

1. я говорил о системном вызове ядра Linux, спасибо за ответы 🙂

Ответ №2:

Перезаписывается только столько байт, сколько значение, возвращенное из read() вызова.

 ovr = read(f, buf, 1000);
if (ovr < 0) /* error */;
/* `ovr` bytes of `buf` were overwritten */