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
是不是有效的打開文件描述符。
*這看起來非常錯誤的我。*同意。在「思考」的代碼背後一定是...有趣。 –