Commit | Line | Data |
---|---|---|
ad2ca886 C |
1 | .TH CLOSE 2 "27 July 1983" |
2 | .UC 4 | |
3 | .SH NAME | |
4 | close \- delete a descriptor | |
5 | .SH SYNOPSIS | |
6 | .B close(d) | |
7 | .br | |
8 | .B "int d;" | |
9 | .SH DESCRIPTION | |
10 | The | |
11 | \fIclose\fP call deletes a descriptor from the per-process object | |
12 | reference table. | |
13 | If this is the last reference to the underlying object, then | |
14 | it will be deactivated. | |
15 | For example, on the last close of a file | |
16 | the current \fIseek\fP pointer associated with the file is lost; | |
17 | on the last close of a | |
18 | .IR socket (2) | |
19 | associated naming information and queued data are discarded; | |
20 | on the last close of a file holding an advisory lock | |
21 | the lock is released; see further | |
22 | .IR flock (2). | |
23 | .PP | |
24 | A close of all of a process's descriptors is automatic on | |
25 | .IR exit , | |
26 | but since | |
27 | there is a limit on the number of active descriptors per process, | |
28 | .I close | |
29 | is necessary for programs which deal with many descriptors. | |
30 | .PP | |
31 | When a process forks (see | |
32 | .IR fork (2)), | |
33 | all descriptors for the new child process reference the same | |
34 | objects as they did in the parent before the fork. | |
35 | If a new process is then to be run using | |
36 | .IR execve (2), | |
37 | the process would normally inherit these descriptors. Most | |
38 | of the descriptors can be rearranged with | |
39 | .IR dup2 (2) | |
40 | or deleted with | |
41 | .I close | |
42 | before the | |
43 | .I execve | |
44 | is attempted, but if some of these descriptors will still | |
45 | be needed if the execve fails, it is necessary to arrange for them | |
46 | to be closed if the execve succeeds. | |
47 | For this reason, the call ``fcntl(d, F_SETFD, 1)'' is provided | |
48 | which arranges that a descriptor will be closed after a successful | |
49 | execve; the call ``fcntl(d, F_SETFD, 0)'' restores the default, | |
50 | which is to not close the descriptor. | |
51 | .SH "RETURN VALUE | |
52 | Upon successful completion, a value of 0 is returned. | |
53 | Otherwise, a value of \-1 is returned and the global integer variable | |
54 | .I errno | |
55 | is set to indicate the error. | |
56 | .SH ERRORS | |
57 | .I Close | |
58 | will fail if: | |
59 | .TP 15 | |
60 | [EBADF] | |
61 | \fID\fP is not an active descriptor. | |
62 | .SH "SEE ALSO" | |
63 | accept(2), flock(2), open(2), pipe(2), socket(2), socketpair(2), | |
64 | execve(2), fcntl(2) |