5
我有一些遗留的代码,做这一切的地方:什么是关闭一个无效的文件描述符呢?
int fd; // open a file
if(fd == -1)
{
close(fd);
}
这看起来非常错误的我。
正在关闭无效的文件描述符是否有效?
我有一些遗留的代码,做这一切的地方:什么是关闭一个无效的文件描述符呢?
int fd; // open a file
if(fd == -1)
{
close(fd);
}
这看起来非常错误的我。
正在关闭无效的文件描述符是否有效?
根据手册:
成功完成后,将返回值0。否则, 值-1 返回和全局整型变量errno设置以指示错误。
然后:
The close() system call will fail if: [EBADF] fildes is not a valid, active file descriptor.
那么任何有害物质不会发生。
它返回一个错误代码。没有什么错误但它也没有用,因为无论如何都没有对return
值进行检查。
引述man page
返回值
close()
返回零成功。错误时,返回-1,并errno设置为合适。
和
错误
EBADF
fd
是不是有效的打开文件描述符。
*这看起来非常错误的我。*同意。在“思考”的代码背后一定是...有趣。 –