Книга: Программирование для 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;
}

Оглавление книги


Генерация: 1.196. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз