xref: /original-bsd/lib/libc/sys/fcntl.2 (revision 9d44d164)
Copyright (c) 1983 The Regents of the University of California.
All rights reserved.

%sccs.include.redist.man%

@(#)fcntl.2 6.6 (Berkeley) 06/23/90

FCNTL 2 ""
C 5
NAME
fcntl - file control
SYNOPSIS
#include <fcntl.h>

res = fcntl(fd, cmd, arg) int res; int fd, cmd, arg;

DESCRIPTION
Fcntl provides for control over descriptors. The argument fd is a descriptor to be operated on by cmd as follows:

15 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 execv (2) system calls.

15 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 exec , otherwise the file will be closed upon execution of exec.

15 F_SETFD Set the close-on-exec flag associated with fd to the low order bit of arg (0 or 1 as above).

15 F_GETFL Get descriptor status flags, as described below.

15 F_SETFL Set descriptor status flags.

15 F_GETOWN Get the process ID or process group currently receiving SIGIO and SIGURG signals; process 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 arg as negative, otherwise arg is interpreted as a process ID.

The flags for the F_GETFL and F_SETFL flags are as follows:

15 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.

"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.
 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.
ERRORS
Fcntl will fail if one or more of the following are true:

15 [EBADF] Fildes is not a valid open file descriptor.

15 [EMFILE] Cmd is F_DUPFD and the maximum allowed number of file descriptors are currently open.

15 [EINVAL] Cmd is F_DUPFD and arg is negative or greater than the maximum allowable number (see getdtablesize (2)).

15 [ESRCH] Cmd 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)
BUGS
The asynchronous I/O facilities of FNDELAY and FASYNC are currently available only for tty and socket operations.