2016-12-01 130 views
5

我有一些遗留的代码,做这一切的地方:什么是关闭一个无效的文件描述符呢?

int fd; // open a file 

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

这看起来非常错误的我。

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

+0

*这看起来非常错误的我。*同意。在“思考”的代码背后一定是...有趣。 –

回答

4

根据手册:

成功完成后,将返回值0。否则, 值-1 返回和全局整型变量errno设置以指示错误。

然后:

The close() system call will fail if: 

[EBADF]   fildes is not a valid, active file descriptor. 

那么任何有害物质不会发生。

4

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

引述man page

返回值

close()返回零成功。错误时,返回-1,并errno设置为合适。

错误

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

相关问题