我有一些遗留代码可以在所有地方执行此操作:
int fd; // open a file
if(fd == -1)
{
close(fd);
}
这对我来说非常不对。
关闭无效的文件描述符是否有效?
答案 0 :(得分:7)
根据手册:
成功完成后,返回值0。否则,一个 值 返回-1,并设置全局整数变量errno以指示错误。
然后:
The close() system call will fail if: [EBADF] fildes is not a valid, active file descriptor.
然后什么都不会有害。
答案 1 :(得分:5)
它返回一个错误代码。没有错误,但它也没用,因为无论如何都没有对return
值进行检查。
引用man page
返回值
close()
成功时返回零。出错时,返回-1,并正确设置errno。
和
<强>错误强>
EBADF
fd
不是有效的打开文件描述符。