FCNTL(2) COMMAND REFERENCE FCNTL(2)
NAME
fcntl - file control
SYNOPSIS
#include <fcntl.h>
result = fcntl(fd, cmd, arg)
int result;
int fd, cmd, arg;
DESCRIPTION
Fcntl provides for control over open descriptors. The
argument fd is an open descriptor. The value of result and
arg depends on cmd; see below. Cmd is one of the following,
defined in <fcntl.h>:
F_DUPFD
Return a new descriptor as follows:
Lowest numbered available descriptor greater than or
equal to arg.
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 execve(2) system
calls.
F_GETFD
Get the close-on-exec flag associated with the file
descriptor fd. If the low-order bit is 0, the file will
remain open across execve calls, otherwise the file will
be closed upon execution of execve calls.
F_SETFD
Set the close-on-exec flag associated with fd to the low
order bit of arg (0 or 1 as above).
F_GETFL
Get descriptor status flags, as described below.
F_SETFL
Set descriptor status flags to arg. Arg is created by
or'ing FNDELAY, FAPPEND and FASYNC; see below.
Printed 10/17/86 1
FCNTL(2) COMMAND REFERENCE FCNTL(2)
F_GETOWN
Get the process group currently receiving SIGIO and
SIGURG signals; process groups are returned as negative
values.
F_SETOWN
Set the process group to receive SIGIO and SIGURG
signals. If arg is negative, it is interpreted as a
process group number. If arg is positive, it is
interpreted as a process ID and the associated process
group is used.
The flags for the F_GETFL and F_SETFL flags are as follows,
defined in <sys/file.h>:
FNDELAY
Non-blocking I/O; if no data is available to a read
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 open(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) and enable the SIGURG signal to be sent when an
exception occurs.
DIAGNOSTICS
Fcntl will fail if one or more of the following are true:
[EBADF]
Fd is not a valid open file descriptor.
[EINVAL]
Cmd or arg is an invalid value.
[EMFILE]
Cmd is F_DUPFD and NOFILE (defined in <sys/max.h>) file
descriptors are currently open.
[EINVAL]
Cmd is F_DUPFD and arg is negative or greater than
NOFILE (defined in <sys/max.h>) (see getdtablesize(2)).
[EINVAL]
Cmd is F_SETOWN and arg is not a valid process ID.
[ENOTTY]
Cmd is not a valid request for the type of object
Printed 10/17/86 2
FCNTL(2) COMMAND REFERENCE FCNTL(2)
associated with fd.
[ENXIO]
Cmd was attempted on a special device which does not
exist, or beyond the limits of the device.
[EIO]
An I/O error occurred while accessing the file system.
[ENODEV]
Fd is a device, and cmd is an inappropriate request for
that device.
RETURN VALUE
Upon successful completion, the value returned depends on
cmd as follows:
F_DUPFD A new file descriptor.
F_GETFD Value of flag (only the low-order bit is defined).
F_GETFL Value of flags, or'd together.
F_GETOWN Value of file descriptor owner.
other Value other than -1.
Otherwise, a value of -1 is returned and errno is set to
indicate the error.
CAVEATS
The asynchronous I/O facilities of FNDELAY and FASYNC are
currently available only for tty operations. No SIGIO
signal is sent upon draining of output sufficiently for
non-blocking writes to occur.
SEE ALSO
close(2), execve(2), getdtablesize(2), open(2), sigvec(2),
execl(3c).
Printed 10/17/86 3
%%index%%
na:72,56;
sy:128,547;
de:675,1621;2440,1109;
di:3549,778;4471,356;
rv:4827,516;
ca:5343,270;
se:5613,240;
%%index%%000000000139