关闭无效文件描述符有什么作用?

Lev*_*viX 7 c file-io

我有一些遗留代码可以在所有地方执行此操作:

int fd; // open a file 

if(fd == -1)
{
    close(fd);
}
Run Code Online (Sandbox Code Playgroud)

这对我来说非常错误.

关闭无效的文件描述符是否有效?

Jea*_*nès 7

根据手册:

成功完成后,返回值0.否则,返回值-1,并设置全局整数变量errno以指示错误.

然后:

 The close() system call will fail if:

 [EBADF]            fildes is not a valid, active file descriptor.
Run Code Online (Sandbox Code Playgroud)

然后什么都不会有害.


Sou*_*osh 5

它返回一个错误代码.没有任何错误,但它也没用,因为return无论如何都没有对值进行检查.

引用手册页

回报价值

close()成功时返回零.出错时,返回-1,并正确设置errno.

错误

EBADF
fd 不是有效的打开文件描述符.