CLOSE.2
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:2k
- CLOSE(2) Minix Programmer's Manual CLOSE(2)
- NAME
- close - delete a descriptor
- SYNOPSIS
- #include <unistd.h>
- int close(int d)
- DESCRIPTION
- The 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 seek 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 fcntl(2)).
- A close of all of a process's descriptors is automatic on exit, but since
- there is a limit on the number of active descriptors per process, close
- is necessary for programs that deal with many descriptors.
- When a process forks (see 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 execve(2), the process
- would normally inherit these descriptors. Most of the descriptors can be
- rearranged with dup2(2) or deleted with close before the execve is
- attempted, but if some of these descriptors will still be needed if the
- execve fails, it is necessary to arrange for them to be closed if the
- execve succeeds. For this reason, the call ``fcntl(d, F_SETFD, flags)''
- is provided, that can be used to mark a descriptor "close on exec" by
- setting the FD_CLOEXEC flag:
- fcntl(d, F_SETFD, fcntl(d, F_GETFD) | FD_CLOEXEC);
- RETURN VALUE
- Upon successful completion, a value of 0 is returned. Otherwise, a value
- of -1 is returned and the global integer variable errno is set to
- indicate the error.
- ERRORS
- Close will fail if:
- [EBADF] D is not an active descriptor.
- SEE ALSO
- open(2), pipe(2), execve(2), fcntl(2).
- 4BSD May 22, 1986 1