|
|
1.1 root 1: .TH FCNTL 2 "18 July 1983"
2: .UC 4
3: .SH NAME
4: fcntl \- file control
5: .SH SYNOPSIS
6: .nf
7: .ft B
8: #include <fcntl.h>
9: .PP
10: .ft B
11: res = fcntl(fd, cmd, arg)
12: int res;
13: int fd, cmd, arg;
14: .ft R
15: .SH DESCRIPTION
16: .I Fcntl
17: provides for control over descriptors.
18: The argument
19: .I fd
20: is a descriptor to be operated on by
21: .I cmd
22: as follows:
23: .TP 15
24: F_DUPFD
25: Return a new descriptor as follows:
26: .IP
27: Lowest numbered available descriptor greater than or equal to
28: .I arg.
29: .IP
30: Same object references as the original descriptor.
31: .IP
32: New descriptor shares the same file pointer if the object
33: was a file.
34: .IP
35: Same access mode (read, write or read/write).
36: .IP
37: Same file status flags (i.e., both file descriptors
38: share the same file status flags).
39: .IP
40: The close-on-exec flag associated with the new file descriptor
41: is set to remain open across
42: .IR execv (2)
43: system calls.
44: .TP 15
45: F_GETFD
46: Get the close-on-exec flag associated with the file descriptor
47: .IR fd .
48: If the low-order bit is 0, the file will remain open across
49: .IR exec ,
50: otherwise the file will be closed upon execution of
51: .I exec.
52: .TP 15
53: F_SETFD
54: Set the close-on-exec flag associated with
55: .I fd
56: to the low order bit of
57: .I arg
58: (0 or 1 as above).
59: .TP 15
60: F_GETFL
61: Get descriptor status flags, as described below.
62: .TP 15
63: F_SETFL
64: Set descriptor status flags.
65: .TP 15
66: F_GETOWN
67: Get the process ID or process group
68: currently receiving SIGIO and SIGURG
69: signals; process groups are returned
70: as negative values.
71: .TP
72: F_SETOWN
73: Set the process or process group
74: to receive SIGIO and SIGURG signals;
75: process groups are specified by supplying
76: .I arg
77: as negative, otherwise
78: .I arg
79: is interpreted as a process ID.
80: .LP
81: The flags for the F_GETFL and F_SETFL flags are as follows:
82: .TP 15
83: FNDELAY
84: Non-blocking I/O; if no data is available to a
85: .I read
86: call, or if a write operation would block,
87: the call returns -1 with the error EWOULDBLOCK.
88: .TP
89: FAPPEND
90: Force each write to append at the end of file;
91: corresponds to the O_APPEND flag of
92: .IR open (2).
93: .TP
94: FASYNC
95: Enable the SIGIO signal to be sent to the process group
96: when I/O is possible, e.g.
97: upon availability of data to be read.
98: .SH "RETURN VALUE
99: Upon successful completion, the value returned depends on
100: .I cmd
101: as follows:
102: .sp .5v
103: .nf
104: .ta .25i 1.25i
105: F_DUPFD A new file descriptor.
106: F_GETFD Value of flag (only the low-order bit is defined).
107: F_GETFL Value of flags.
108: F_GETOWN Value of file descriptor owner.
109: other Value other than \-1.
110: .fi
111: .sp .5v
112: Otherwise, a value of \-1 is returned and
113: .I errno
114: is set to indicate the error.
115: .SH ERRORS
116: .I Fcntl
117: will fail if one or more of the following are true:
118: .TP 15
119: [EBADF]
120: .I Fildes
121: is not a valid open file descriptor.
122: .TP 15
123: [EMFILE]
124: .I Cmd
125: is F_DUPFD and the maximum allowed number of file descriptors are currently
126: open.
127: .TP 15
128: [EINVAL]
129: .I Cmd
130: is F_DUPFD and
131: .I arg
132: is negative or greater the maximum allowable number
133: (see
134: .IR getdtablesize (2)).
135: .SH "SEE ALSO
136: close(2), execve(2), getdtablesize(2), open(2), sigvec(2)
137: .SH BUGS
138: The asynchronous I/O facilities of FNDELAY and FASYNC
139: are currently available only for tty operations.
140: No SIGIO signal is sent upon draining of output sufficiently
141: for non-blocking writes to occur.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.