# write(2)

## NAME

         write - write output

## SYNOPSIS

         #include <sys/types.h>
         #include <unistd.h>

         ssize_t write(int d, const void *buf, size_t nbytes)

## DESCRIPTION

         Write attempts to write nbytes of data to the object  referenced  by  the
         descriptor d from the buffer pointed to by buf.

         On objects capable of seeking, the write starts at a  position  given  by
         the pointer associated with d, see lseek(2).  Upon return from write, the
         pointer is incremented by the number of bytes actually written.

         Objects that are not capable of seeking always  write  from  the  current
         position.   The  value  of  the pointer associated with such an object is
         undefined.

         When using non-blocking I/O on objects such as TCP/IP channels  that  are
         subject  to flow control, write may write fewer bytes than requested; the
         return value must be noted, and the remainder of the operation should  be
         retried when possible.

## RETURN VALUE

         Upon successful completion  the  number  of  bytes  actually  written  is
         returned.   Otherwise  a  -1 is returned and the global variable errno is
         set to indicate the error.

## ERRORS

         Write will fail and the file pointer will remain unchanged if one or more
         of the following are true:

         [EBADF]        D is not a valid descriptor open for writing.

         [EPIPE]        An attempt is made to write to a pipe that is not open for
                        reading by any process.

         [EPIPE]        An attempt is made to write to a TCP channel that  is  not
                        connected to a peer socket.

         [EFBIG]        An attempt was made to  write  a  file  that  exceeds  the
                        process's file size limit or the maximum file size.

         [EFAULT]       Part of the data to be written to the file points  outside
                        the process's allocated address space.

         [ENOSPC]       There is no  free  space  remaining  on  the  file  system
                        containing the file.

         [EIO]          An I/O error occurred while reading from or writing to the
                        file system.

         [EAGAIN]       The file was marked for  non-blocking  I/O,  and  no  data
                        could be written immediately.

## SEE ALSO

         fcntl(2), lseek(2), open(2), pipe(2), read(2).