CLOSE.2
资源名称:os_source.zip [点击查看]
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:2k
源码类别:
操作系统开发
开发平台:
C/C++
- ." Copyright (c) 1980 Regents of the University of California.
- ." All rights reserved. The Berkeley software License Agreement
- ." specifies the terms and conditions for redistribution.
- ."
- ." @(#)close.2 6.3 (Berkeley) 5/22/86
- ."
- .TH CLOSE 2 "May 22, 1986"
- .UC 4
- .SH NAME
- close - delete a descriptor
- .SH SYNOPSIS
- .nf
- .ft B
- #include <unistd.h>
- int close(int fIdfP)
- .ft R
- .fi
- .SH DESCRIPTION
- The
- .B close
- call deletes a descriptor from the per-process object
- reference table.
- If this is the last reference to the underlying object, then
- it will be deactivated.
- For example, on the last close of a file
- the current fIseekfP pointer associated with the file is lost;
- on the last close of a TCP/IP descriptor
- associated naming information and queued data are discarded;
- on the last close of a file holding an advisory lock
- the lock is released (see further
- .BR fcntl (2)).
- .PP
- A close of all of a process's descriptors is automatic on
- .IR exit ,
- but since
- there is a limit on the number of active descriptors per process,
- .B close
- is necessary for programs that deal with many descriptors.
- .PP
- When a process forks (see
- .BR fork (2)),
- all descriptors for the new child process reference the same
- objects as they did in the parent before the fork.
- If a new process is then to be run using
- .BR execve (2),
- the process would normally inherit these descriptors. Most
- of the descriptors can be rearranged with
- .BR dup2 (2)
- or deleted with
- .B close
- before the
- .B execve
- is attempted, but if some of these descriptors will still
- be needed if the
- .B execve
- fails, it is necessary to arrange for them to be closed if the
- .B execve
- succeeds.
- For this reason, the call ``fcntl(d, F_SETFD, fIflagsfR)'' is provided,
- that can be used to mark a descriptor "close on exec" by setting
- the
- .B FD_CLOEXEC
- flag:
- .PP
- .RS
- fcntl(d, F_SETFD, fcntl(d, F_GETFD) | FD_CLOEXEC);
- .RE
- .SH "RETURN VALUE
- Upon successful completion, a value of 0 is returned.
- Otherwise, a value of -1 is returned and the global integer variable
- .B errno
- is set to indicate the error.
- .SH ERRORS
- .B Close
- will fail if:
- .TP 15
- [EBADF]
- fIDfP is not an active descriptor.
- .SH "SEE ALSO"
- .BR open (2),
- .BR pipe (2),
- .BR execve (2),
- .BR fcntl (2).