write

WRITE(2)        Ð ÑководÑÑво пÑогÑаммиÑÑа Linux        WRITE(2)



ÐÐЯ
       write - пиÑаÑÑ Ð² ÑайловÑй деÑкÑипÑоÑ

ÐÐÐÐÐ
       #include <unistd.h>

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

ÐÐÐСÐÐÐÐ
       write пиÑÐµÑ count Ð±Ð°Ð¹Ñ Ð² Ñайл, на коÑоÑÑй ÑÑÑлаеÑÑÑ
       ÑайловÑй деÑкÑипÑÐ¾Ñ fd из бÑÑеÑа, на коÑоÑÑй
       ÑказÑÐ²Ð°ÐµÑ buf.  POSIX ÑÑебÑÑ, ÑÑÐ¾Ð±Ñ read(), коÑоÑÑй
       Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¿Ð¾Ñле write() возвÑаÑил
       новÑе даннÑе.  ÐамеÑим, ÑÑо не вÑе ÑайловÑе
       ÑиÑÑÐµÐ¼Ñ ÑооÑвеÑÑÑвÑÑÑ ÑÑандаÑÑÑ POSIX.

ÐÐÐÐÐ ÐЩÐÐÐÐÐ ÐÐÐЧÐÐÐÐ
       Ð ÑлÑÑае ÑÑпеÑа, возвÑаÑаеÑÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво
       запиÑаннÑÑ Ð±Ð°Ð¹Ñ (Ð½Ð¾Ð»Ñ Ð³Ð¾Ð²Ð¾ÑÐ¸Ñ Ð¾ Ñом, ÑÑо
       ниÑего запиÑано не бÑло). Ð ÑлÑÑае оÑибки,
       возвÑаÑаеÑÑÑ -1 и знаÑение errno
       ÑÑÑанавливаеÑÑÑ ÑооÑвеÑÑÑвÑÑÑим обÑазом. ÐÑли
       count Ñавен нÑÐ»Ñ Ð¸ ÑайловÑй деÑкÑипÑоÑ
       ÑказÑÐ²Ð°ÐµÑ Ð½Ð° обÑÑнÑй Ñайл, бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑÑÑ 0
       без какиÑ-либо дÑÑÐ³Ð¸Ñ Ð¿Ð¾ÑледÑÑвий.  ÐлÑ
       ÑпеÑиалÑнÑÑ Ñайлов, полÑÑивÑиеÑÑ ÑезÑлÑÑаÑÑ Ð½Ðµ
       пеÑеноÑÐ¸Ð¼Ñ Ð½Ð° дÑÑгие плаÑÑоÑмÑ.

ÐШÐÐÐÐ
       EBADF  fd не ÑвлÑеÑÑÑ Ð¿ÑавилÑнÑм ÑайловÑм
              деÑкÑипÑоÑом или не оÑкÑÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи.

       EINVAL fd ÑÑÑлаеÑÑÑ Ð½Ð° обÑекÑ, коÑоÑÑй не можеÑ
              бÑÑÑ Ð´Ð¾ÑÑÑпен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи.

       EFAULT buf наÑодиÑÑÑ Ð·Ð° пÑеделами доÑÑÑпного
              вам адÑеÑного пÑоÑÑÑанÑÑва.

       EFBIG  ÐопÑÑка запиÑаÑÑ Ð² Ñайл, коÑоÑÑй пÑевÑÑаеÑ
              заданное пÑи ÑеализаÑии огÑаниÑение
              на ÑÐ°Ð·Ð¼ÐµÑ Ñайла или огÑаниÑение на
              ÑÐ°Ð·Ð¼ÐµÑ Ñайла Ð´Ð»Ñ ÑекÑÑего пÑоÑеÑÑа, или
              запиÑÑ Ð² позиÑÐ¸Ñ Ð¿Ð¾Ñле макÑималÑно
              ÑазÑеÑÑнного ÑмеÑениÑ.

       EPIPE  fd ÑÑÑлаеÑÑÑ Ð½Ð° ÐºÐ¾Ð½Ð²ÐµÐµÑ Ð¸Ð»Ð¸ ÑокеÑ, Ñ
              коÑоÑого закÑÑÑо ÑÑение. Ðогда Ñакое
              ÑлÑÑаеÑÑÑ, пиÑÑÑий пÑоÑеÑÑ Ñакже полÑÑиÑ
              Ñигнал SIGPIPE .  (Таким обÑазом,
              возвÑаÑаемое знаÑение можно бÑдеÑ
              ÑвидеÑÑ ÑолÑко еÑли пÑогÑамма
              пеÑеÑваÑÑваеÑ, блокиÑÑÐµÑ Ð¸Ð»Ð¸ игноÑиÑÑеÑ
              ÑÑÐ¾Ñ Ñигнал).

       EAGAIN ÐÑл вÑбÑан неблокиÑÑÑÑий ввод/вÑвод,
              ÑеÑез O_NONBLOCK , а запиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð°
              пÑоизвеÑÑи блокиÑовкÑ.

       EINTR  ÐÑÐ¾Ñ Ð²Ñзов бÑл пÑеÑван Ñигналом, пеÑед
              Ñем как бÑли запиÑÐ°Ð½Ñ ÐºÐ°ÐºÐ¸Ðµ-либо
              даннÑе.

       ENOSPC Ðа ÑÑÑÑойÑÑве, ÑодеÑжаÑем Ñайл, на коÑоÑÑй
              ÑÑÑлаеÑÑÑ fd Ð½ÐµÑ Ñвободного меÑÑа.

       EIO    Ðо вÑÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑного
              деÑкÑипÑоÑа (inode) возникла
              низкоÑÑÐ¾Ð²Ð½ÐµÐ²Ð°Ñ Ð¾Ñибка ввода/вÑвода.

       РзавиÑимоÑÑи Ð¾Ñ Ð¾Ð±ÑекÑа, на коÑоÑÑй
       ÑказÑÐ²Ð°ÐµÑ fd могÑÑ Ð¿ÑоиÑÑодиÑÑ Ð¸ дÑÑгие
       оÑибки.

СÐÐТÐÐТСТÐÐРСТÐÐÐÐРТÐÐ
       SVr4, SVID, POSIX, X/OPEN, 4.3BSD.  SVr4 докÑменÑиÑÑеÑ
       дополниÑелÑнÑе ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð¾Ñибок EDEADLK, ENOLCK,
       ENOLNK, ENOSR, ENXIO или ERANGE.  Ðод SVr4 вÑзов write
       Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеÑван и возвÑаÑиÑÑ EINTR в лÑбом
       меÑÑе, а не ÑолÑко пеÑед Ñем как бÑдÑÑ
       запиÑÐ°Ð½Ñ ÐºÐ°ÐºÐ¸Ðµ-либо даннÑе.

ÐÐÐÐЧÐÐÐЯ
       УÑпеÑнÑй возвÑÐ°Ñ Ð¸Ð· вÑзова write не даÑÑ
       Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ Ð³Ð°ÑанÑий, ÑÑо даннÑе ÑоÑÑÐ°Ð½ÐµÐ½Ñ Ð½Ð°
       диÑке. ФакÑиÑеÑки, в некоÑоÑÑÑ Ð³Ð»ÑÑнÑÑ
       ÑеализаÑиÑÑ, даже Ð½ÐµÑ Ð³Ð°ÑанÑии, ÑÑо длÑ
       даннÑÑ Ð±Ñло заÑезеÑвиÑовано меÑÑо. ÐÑÑÑ
       ÑолÑко один ÑпоÑоб, ÑÑÐ¾Ð±Ñ Ð±ÑÑÑ ÑвеÑеннÑм в
       ÑоÑÑанении даннÑÑ Ð½Ð° диÑке - ÑÑо вÑзов fsync(2)
       поÑле Ñого как Ð²Ñ Ð·Ð°Ð¿Ð¸ÑеÑе вÑе ваÑи даннÑе.

СÐÐТРРТÐÐÐÐ
       close(2), fcntl(2), fsync(2), ioctl(2), lseek(2), open(2), read(2),
       select(2), fwrite(3), writev(3)

ÐÐÐ ÐÐÐÐ
       ÐеÑевÑл Ñ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкого ÐикÑÐ¾Ñ ÐиÑлобоков
       <corochoone@perm.ru> 2004



Linux 2.0.32                      2001-12-13                          WRITE(2)