我有一些遗留代码,它在很多地方都这样做:
int fd; // open a file
if(fd == -1)
{
close(fd);
}
我认为这看起来非常不对。
关闭一个无效的文件描述符是有效的吗?
那么就不会发生任何有害的事情。The close() system call will fail if: [EBADF] fildes is not a valid, active file descriptor.
它返回一个错误代码。虽然没有任何问题,但也没有用处,因为无论如何都没有对return
值进行检查。
引用 man页面
返回值
close()
在成功时返回零。发生错误时,将返回-1,并适当设置errno。
和
错误
EBADF
fd
不是有效的打开文件描述符。