Книга: Программирование для Linux. Профессиональный подход
Листинг Б.3. (write-all.c) Запись буфера
Листинг Б.3. (write-all.c) Запись буфера
/* Запись указанного числа байтов (COUNT) из буфера BUFFER
в файл FD. В случае ошибки возвращается -1,
иначе -- число записанных байтов. */
ssize_t write_all(int fd, const void* buffer, size_t count) {
size_t left_to_write = count;
while (left_to_write > 0) {
size_t written = write(fd, buffer, count);
if (written == -1)
/* Произошла ошибка, завершаем работу. */
return -1;
else
/* подсчитываем число оставшихся байтов. */
left_to_write -= written;
}
/* Нельзя записать больше, чем COUNT байтов! */
assert(left_to_write == 0);
/* Число записанных байтов равно COUNT. */
return count;
}
Оглавление статьи/книги
Похожие страницы
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Forced writes - палка о двух концах
- Forced Writes
- Chapter 5 Installing and Configuring VirtualCenter 2.0
- Chapter 13. rc.firewall file
- 3.2.1.2. Начальное выделение памяти: malloc()
- Installation on Red Hat 7.1
- 4.4.3. Чтение и запись
- example rc.firewall
- explanation of rc.firewall
- rc.firewall.txt script structure
- rc.firewall.txt