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

时间:2016-12-01 16:09:36

标签: c file-io

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

int fd; // open a file 

if(fd == -1)
{
    close(fd);
}

这对我来说非常不对。

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

2 个答案:

答案 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不是有效的打开文件描述符。