close - 关闭一个文件描述符
内容简介
#include <unistd.h> int close(int fd) |
描述
close() closes a file descriptor, so that it no longer refers to any file and may be reused. Any record locks (see%uA0fcntl(2)) held on the file it was associated with, and owned by the process, are removed (regardless of the file descriptor that was used to obtain the lock).
If%uA0fd%uA0is the last copy of a particular file descriptor the resources associated with it are freed if the descriptor was the last reference to a file which has been removed using%uA0unlink(2) the file is deleted.
返回值
close()%uA0成功返回零。上的错误,则返回-1,errno设置为合适。
错误
标签 | 描述 |
---|---|
EBADF | fd%uA0isn’t a valid open file descriptor. |
EINTR | The%uA0close() call was interrupted by a signal. |
EIO | An I/O error occurred. |
遵循于
SVr4, 4.3BSD, POSIX.1-2001.
注意
Not checking the return value of%uA0close() is a common but nevertheless serious programming error. It is quite possible that errors on a previous%uA0write(2) operation are first reported at the final%uA0close(). Not checking the return value when closing the file may lead to silent loss of data. This can especially be observed with NFS and with disk quota.
A successful close does not guarantee that the data has been successfully saved to disk, as the kernel defers writes. It is not common for a filesystem to flush the buffers when the stream is closed. If you need to be sure that the data is physically stored use%uA0fsync(2). (It will depend on the disk hardware at this point.)