Top Qs
Timeline
Chat
Perspective

Write (system call)

System call in a Unix-like operating system kernel From Wikipedia, the free encyclopedia

Remove ads

The write is one of the most basic routines provided by a Unix-like operating system kernel. It writes data from a buffer declared by the user to a given device, such as a file. This is the primary way to output data from a program by directly using a system call. The destination is identified by a numeric code. The data to be written, for instance a piece of text, is defined by a pointer and a size, given in number of bytes.

write thus takes three arguments:

  1. The file code (file descriptor or fd).
  2. The pointer to a buffer where the data is stored (buf).
  3. The number of bytes to write from the buffer (nbytes).
Remove ads

POSIX usage

The write call interface[1][2][3] is standardized by the POSIX specification. Data is written to a file by calling the write function. The function prototype is:

 ssize_t write(int fildes, const void *buf, size_t nbyte);
More information Argument, Description ...

In above syntax, ssize_t is a typedef. It is a signed data type defined in stddef.h. Note that write() does not return an unsigned value; it returns -1 if an error occurs so it must return a signed value.
The write function returns the number of bytes successfully written into the file, which may at times be less than the specified nbytes. It returns -1 if an exceptional condition is encountered, see section on errors below.

Remove ads

Linux

Historically, Linux would use different system call tables for different architectures. write has the call number 1 on x86-64,[4] but 4 on ARM.[5] However, more recent architectures supported by Linux have adopted a universal system call table, in which write's call number is 64[6].

When compiling software, the kernel exposes the call numbers for the target architecture as integer constants in the C header <linux/unistd.h>.[7] Several macros are defined in the form of __NR_xxx, which expand to the call number for the system call xxx. As such, write's call number is exposed as __NR_write. This header may also be included by assembler code using the C preprocessor.

Remove ads

See also

References

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads