HPlogo MPE/iX Developer's Kit Reference Manual Volume I: HP 3000 MPE/iX Computer Systems > Chapter 4  POSIX/iX Library Function Descriptions

write

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

Writes data to a file.

Syntax

   ssize_t write (int fildes, const void *buffer, size_t nbyte);

Parameters

fildes

An open file descriptor.

buffer

A pointer to a buffer containing data to be written. The size of the buffer must be greater than nbyte.

nbyte

The maximum number of bytes to write.

Return Values

>=0

Success. An integer indicating the number of bytes actually written is returned.

-1

An error occurred. No data is written, and errno is set to indicate the error condition.

Description

The write() function attempts to writes nbyte bytes from the buffer pointed to by buffer to the open file associated with the open file descriptor fildes.

On a file capable of seeking, write() starts from the current file offset position. Before successful return from write(), the file offset is incremented by the number of bytes actually written. If the incremented file offset is greater than the EOF of the file, the EOF of the file is set to the new file offset.

If the O_APPEND file status flag is set, the file offset is set to the end of the file prior to each write.

On a file not capable of seeking, write() starts from the current position. (The file offset for such a file is undefined.)

Upon successful completion, the write() function returns the actual number of bytes written to the file and, if nbyte is greater than 0, marks for update the st_ctime and st_mtime time fields of the file.

If write() requests that more bytes be written than there is room for (for example, the physical end of medium), only as many bytes as there is room for are written. In this case, the next write to the file of a nonzero number of bytes fails, and an error is returned.

If nbytes is zero, the write() function writes zero bytes of data. In this case, the file offset position is not changed and no time fields are marked for update.

Implementation Considerations

Refer to the EFBIG, EFAULT, EIMPL, and ESYSERR error descriptions below.

Signals generated for the calling process during execution of write() are deferred from delivery until completion of this function.

Errors

If an error occurs, errno is set to one of the following values:

EBADFCAUSE The fildes parameter is not a valid open file descriptor open for writing.
 ACTION Pass a valid open file descriptor of a file open for writing by the calling process.
EFAULTCAUSE The system detected a NULL or bad address in attempting to use the buffer parameter.
 ACTION Make sure that the pointer is correctly initialized.
EFBIGCAUSE The file size has exceeded the file limit. The default file limit is 2 gigabytes.
 ACTION Reduce the size of the file.
EIMPLCAUSE The file size has exceeded the disk space limit established by the MPE/iX accounting facility.
 ACTION Make sure that the MPE/iX accounting facility allows you to increase the size of the file.
ENOSPCCAUSE There is no free space remaining on the device containing the file.
 ACTION Deallocate space on the device.
ESYSERRCAUSE An operating system error has occurred that does not map directly to any of the above errors.
 ACTION Examine the MPE/iX error stack for the type of system error.

See Also

creat(), dup(), lseek(), open(), POSIX.1 (Section 6.4.2)

Feedback to webmaster