4.3BSD-UWisc/man/cat2/fcntl.2
FCNTL(2) UNIX Programmer's Manual FCNTL(2)
NAME
fcntl - file control
SYNOPSIS
#include <fcntl.h>
res = fcntl(fd, cmd, arg)
int res;
int fd, cmd, arg;
DESCRIPTION
_F_c_n_t_l provides for control over descriptors. The argument
_f_d is a descriptor to be operated on by _c_m_d as follows:
F_DUPFD Return a new descriptor as follows:
Lowest numbered available descriptor greater
than or equal to _a_r_g.
Same object references as the original
descriptor.
New descriptor shares the same file pointer
if the object was a file.
Same access mode (read, write or read/write).
Same file status flags (i.e., both file
descriptors share the same file status
flags).
The close-on-exec flag associated with the
new file descriptor is set to remain open
across _e_x_e_c_v(2) system calls.
F_GETFD Get the close-on-exec flag associated with
the file descriptor _f_d. If the low-order bit
is 0, the file will remain open across _e_x_e_c,
otherwise the file will be closed upon execu-
tion of _e_x_e_c.
F_SETFD Set the close-on-exec flag associated with _f_d
to the low order bit of _a_r_g (0 or 1 as
above).
F_GETFL Get descriptor status flags, as described
below.
F_SETFL Set descriptor status flags.
F_GETOWN Get the process ID or process group currently
receiving SIGIO and SIGURG signals; process
Printed 12/27/86 May 22, 1986 1
FCNTL(2) UNIX Programmer's Manual FCNTL(2)
groups are returned as negative values.
F_SETOWN Set the process or process group to receive
SIGIO and SIGURG signals; process groups are
specified by supplying _a_r_g as negative, oth-
erwise _a_r_g is interpreted as a process ID.
The flags for the F_GETFL and F_SETFL flags are as follows:
FNDELAY Non-blocking I/O; if no data is available to
a _r_e_a_d call, or if a write operation would
block, the call returns -1 with the error
EWOULDBLOCK.
FAPPEND Force each write to append at the end of
file; corresponds to the O_APPEND flag of
_o_p_e_n(2).
FASYNC Enable the SIGIO signal to be sent to the
process group when I/O is possible, e.g.,
upon availability of data to be read.
RETURN VALUE
Upon successful completion, the value returned depends on
_c_m_d as follows:
9 F_DUPFD A new file descriptor.
F_GETFD Value of flag (only the low-order bit is defined).
F_GETFL Value of flags.
F_GETOWN Value of file descriptor owner.
other Value other than -1.
9 Otherwise, a value of -1 is returned and _e_r_r_n_o is set to
indicate the error.
ERRORS
_F_c_n_t_l will fail if one or more of the following are true:
[EBADF] _F_i_l_d_e_s is not a valid open file descriptor.
[EMFILE] _C_m_d is F_DUPFD and the maximum allowed number
of file descriptors are currently open.
[EINVAL] _C_m_d is F_DUPFD and _a_r_g is negative or greater
than the maximum allowable number (see
_g_e_t_d_t_a_b_l_e_s_i_z_e(2)).
[ESRCH] _C_m_d is F_SETOWN and the process ID given as
argument is not in use.
SEE ALSO
close(2), execve(2), getdtablesize(2), open(2), sigvec(2)
Printed 12/27/86 May 22, 1986 2
FCNTL(2) UNIX Programmer's Manual FCNTL(2)
BUGS
The asynchronous I/O facilities of FNDELAY and FASYNC are
currently available only for tty and socket operations.
Printed 12/27/86 May 22, 1986 3