10-关闭文件_close()
4.6 关闭文件:close()
close()系统调用关闭一个打开的文件描述符,并将其释放回调用进程,供该进程继续使用。当一进程终止时,将自动关闭其已打开的所有文件描述符。
显式关闭不再需要的文件描述符往往是良好的编程习惯,会使代码在后续修改时更具可读性,也更可靠。进而言之,文件描述符属于有限资源,因此文件描述符关闭失败可能会导致一个进程将文件描述符资源消耗殆尽。在编写需要长期运行并处理大量文件的程序时,比如shell或者网络服务器软件,需要特别加以关注。
像其他所有系统调用一样,应对close()的调用进行错误检查,如下所示:
上述代码能够捕获的错误有:企图关闭一个未打开的文件描述符,或者两次关闭同一文件描述符,也能捕获特定文件系统在关闭操作中诊断出的错误条件。
针对特定文件系统的错误,NFS(网络文件系统)就是一例。如果NFS出现提交失败,这意味着数据没有抵达远程磁盘,随之将这一错误作为close()调用失败的原因传递给应用系统。