Open System Services System Calls Reference Manual (G06.29+, H06.08+, J06.03+)
write(2) OSS System Calls Reference Manual
When attempting to write to a socket and with no space available for data:
• If the O_NONBLOCK flag is not set, the write( ) function blocks until space becomes
available or an error occurs.
• If the O_NONBLOCK flag is set, the write( ) function returns the value -1 and sets
errno to [EWOULDBLOCK].
Upon successful completion, the write() function marks the st_ctime and st_mtime fields of the
file for update and clears the set-user-ID and set-group-ID attributes if the file is a regular file.
The fcntl() function provides more information about record locks.
If the write() function is interrupted by a signal before it writes any data, it returns the value -1
with errno set to [EINTR]. If the write( ) function is interrupted by a signal after it has success-
fully written some data, it returns the number of bytes that it has written.
Use on Guardian Objects
Attempting to write to a Guardian file (that is, a file in /G) that is locked causes the write() func-
tion to return -1 and set errno to [EGUARDIANLOCKED].
Use From a Threaded Application
The thread-aware write() function behaves exactly the same as spt_writez() in the Standard
POSIX Threads library. For file descriptors for regular files, if this thread-aware write( ) function
must wait for an I/O operation to complete on an open file, this function blocks the thread
(instead of the entire process) that called it, while it waits for the I/O operation to complete.
NOTES
To use the write( ) functionality in a threaded application that uses the Standard POSIX Threads
library, see spt_writez(2).
To use this function in a threaded application that uses the POSIX User Thread Model library on
systems running J06.10 or later RVUs or H06.21 or later RVUs, you must perform all of the fol-
lowing tasks to make the function thread-aware in a multi-threaded application:
• Compile the application using the _PUT_MODEL_ feature test macro or equivalent
compiler command option.
• Link the application to the zputdll library (/G/system/zdllnnn/zputdll).
On systems running H06.24 or later H-series RVUs or J06.13 or later J-series RVUs, you can use
this function with 32-bit or 64-bit OSS applications.
To use this function in a 32-bit threaded application that uses the POSIX User Thread Model
library on systems running H06.24 or later RVUs or J06.13 or later RVUs, perform the same
tasks (described above) used to enable the function on systems running H06.21/J06.10 or later
RVUs.
To use this function in a 64-bit threaded application that uses the POSIX User Thread Model
library on systems running H06.24 or later RVUs or J06.13 or later RVUs, you must perform all
of the following tasks:
• Compile the application using the _PUT_MODEL_ feature test macro or equivalent
compiler command option.
• Compile the application using the -Wlp64 compiler command option.
• Link the application to the yputdll library (/G/system/zdllnnn/yputdll).
For detailed information about writing multi-threaded and 64-bit applications for the Open Sys-
tem Services environment, see the Open System Services Programmer’s Guide.
10−16 Hewlett-Packard Company 527186-023