Документация по LinuxLinuxDoc.Ru 🔍

write - производит запись в файловый описатель

НАЗВАНИЕ
write - производит запись в файловый описатель

СИНТАКСИС
#include

ssize_t write(int fd, const void *buf, size_t count);

ОПИСАНИЕ
write записывает до count байтов из буфера buf в файл, на
который ссылается файловый описатель fd. POSIX указывает
на то, что вызов write(), произошедший после вызова read()
возвращает уже новое значение. Заметьте, что не все
файловые системы соответствуют стандарту POSIX.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успешного завершения возвращается количество
байтов, которые были записаны (ноль означает, что не было
записано ни одного байта). В случае ошибки возвращается
-1, а переменной errno присваивается соответствующее
значение. Если count равен нулю, а файловый описатель
ссылается на обычный файл, то будет возвращен ноль и
больше не будет произведено никаких действий. Для
специальных файлов результаты не могут быть перенесены на
другую платформу.

КОДЫ ОШИБОК

EBADF fd не является правильным файловым описателем или
же не открыт для записи.

EINVAL fd связан с объектом, не подлежащим записи.

EFAULT buf указывает за пределы доступного адресного
пространства.

EFBIG Была выполнена попытка записи файла, размер
которого превышает максимально определенный
системой или процессом лимит, или была попытка
записать в файле данные в позицию за пределами
максимального допустимого смещения.

EPIPE fd соединен с каналом (pipe) или сокетом, но
принимающее соединение разорвано. Когда это
происходит, записывающий процесс получает сигнал
SIGPIPE; если этот сигнал обрабатывается,
блокируется или игнорируется, то возвращается
ошибка EPIPE.

EAGAIN С помощью флага O_NONBLOCK был запрошен
неблокированый ввод-вывод, а запись была в
блокирующем режиме.

EINTR Системный вызов был прерван сигналом до того, как
был записан хотя бы один байт данных.

ENOSPC На устройстве, содержащем файл, описываемый fd, нет
места для записи данных.

EIO При модификации inode произошла низкоуровневая
ошибка ввода-вывода.

Могут произойти не описанные выше ошибки в зависимости от
объекта, связанного с fd.

СООТВЕТСТВИЕ СТАНДАРТАМ

SVr4, SVID, POSIX, X/OPEN, 4.3BSD. SVr4 описывают
дополнительные коды ошибок EDEADLK, ENOLCK, ENOLNK, ENOSR,
ENXIO, EPIPE, или ERANGE. Для SVr3 этот системный вызов
может быть прерван и вернет EINTR в любой ситуации, а не
только до записи хотя бы одного байта данных.

ЗАМЕЧАНИЯ
Успешное завершение write не гарантирует, что данные были
записаны на диск. В действительности, в некоторых
реализациях, содержащих ошибки, не гарантируется даже
выделение места под данные. Единственный способ
гарантировать запись данных - это вызвать fsync(2) по
окончании записи ваших данных.
Читать новости Linux в Telegram
Linux - write - производит запись в файловый описатель
Мы в соцсетях ✉