|
|
1.1 root 1: .\" Copyright (c) 1983 The Regents of the University of California.
2: .\" All rights reserved.
3: .\"
4: .\" Redistribution and use in source and binary forms are permitted provided
5: .\" that: (1) source distributions retain this entire copyright notice and
6: .\" comment, and (2) distributions including binaries display the following
7: .\" acknowledgement: ``This product includes software developed by the
8: .\" University of California, Berkeley and its contributors'' in the
9: .\" documentation or other materials provided with the distribution and in
10: .\" all advertising materials mentioning features or use of this software.
11: .\" Neither the name of the University nor the names of its contributors may
12: .\" be used to endorse or promote products derived from this software without
13: .\" specific prior written permission.
14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17: .\"
18: .\" @(#)fcntl.2 6.6 (Berkeley) 6/23/90
19: .\"
20: .TH FCNTL 2 "June 23, 1990"
21: .UC 5
22: .SH NAME
23: fcntl \- file control
24: .SH SYNOPSIS
25: .nf
26: .ft B
27: #include <fcntl.h>
28: .PP
29: .ft B
30: res = fcntl(fd, cmd, arg)
31: int res;
32: int fd, cmd, arg;
33: .ft R
34: .SH DESCRIPTION
35: .I Fcntl
36: provides for control over descriptors.
37: The argument
38: .I fd
39: is a descriptor to be operated on by
40: .I cmd
41: as follows:
42: .TP 15
43: F_DUPFD
44: Return a new descriptor as follows:
45: .IP
46: Lowest numbered available descriptor greater than or equal to
47: .I arg.
48: .IP
49: Same object references as the original descriptor.
50: .IP
51: New descriptor shares the same file pointer if the object
52: was a file.
53: .IP
54: Same access mode (read, write or read/write).
55: .IP
56: Same file status flags (i.e., both file descriptors
57: share the same file status flags).
58: .IP
59: The close-on-exec flag associated with the new file descriptor
60: is set to remain open across
61: .IR execv (2)
62: system calls.
63: .TP 15
64: F_GETFD
65: Get the close-on-exec flag associated with the file descriptor
66: .IR fd .
67: If the low-order bit is 0, the file will remain open across
68: .IR exec ,
69: otherwise the file will be closed upon execution of
70: .I exec.
71: .TP 15
72: F_SETFD
73: Set the close-on-exec flag associated with
74: .I fd
75: to the low order bit of
76: .I arg
77: (0 or 1 as above).
78: .TP 15
79: F_GETFL
80: Get descriptor status flags, as described below.
81: .TP 15
82: F_SETFL
83: Set descriptor status flags.
84: .TP 15
85: F_GETOWN
86: Get the process ID or process group
87: currently receiving SIGIO and SIGURG
88: signals; process groups are returned
89: as negative values.
90: .TP
91: F_SETOWN
92: Set the process or process group
93: to receive SIGIO and SIGURG signals;
94: process groups are specified by supplying
95: .I arg
96: as negative, otherwise
97: .I arg
98: is interpreted as a process ID.
99: .LP
100: The flags for the F_GETFL and F_SETFL flags are as follows:
101: .TP 15
102: FNDELAY
103: Non-blocking I/O; if no data is available to a
104: .I read
105: call, or if a write operation would block,
106: the call returns -1 with the error EWOULDBLOCK.
107: .TP
108: FAPPEND
109: Force each write to append at the end of file;
110: corresponds to the O_APPEND flag of
111: .IR open (2).
112: .TP
113: FASYNC
114: Enable the SIGIO signal to be sent to the process group
115: when I/O is possible, e.g.,
116: upon availability of data to be read.
117: .SH "RETURN VALUE
118: Upon successful completion, the value returned depends on
119: .I cmd
120: as follows:
121: .sp .5v
122: .nf
123: .ta .25i 1.25i
124: F_DUPFD A new file descriptor.
125: F_GETFD Value of flag (only the low-order bit is defined).
126: F_GETFL Value of flags.
127: F_GETOWN Value of file descriptor owner.
128: other Value other than \-1.
129: .fi
130: .sp .5v
131: Otherwise, a value of \-1 is returned and
132: .I errno
133: is set to indicate the error.
134: .SH ERRORS
135: .I Fcntl
136: will fail if one or more of the following are true:
137: .TP 15
138: [EBADF]
139: .I Fildes
140: is not a valid open file descriptor.
141: .TP 15
142: [EMFILE]
143: .I Cmd
144: is F_DUPFD and the maximum allowed number of file descriptors are currently
145: open.
146: .TP 15
147: [EINVAL]
148: .I Cmd
149: is F_DUPFD and
150: .I arg
151: is negative or greater than the maximum allowable number
152: (see
153: .IR getdtablesize (2)).
154: .TP 15
155: [ESRCH]
156: .I Cmd
157: is F_SETOWN and
158: the process ID given as argument is not in use.
159: .SH "SEE ALSO
160: close(2), execve(2), getdtablesize(2), open(2), sigvec(2)
161: .SH BUGS
162: The asynchronous I/O facilities of FNDELAY and FASYNC
163: are currently available only for tty and socket operations.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.