2016-12-01 170 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是不是有效的打開文件描述符。

相關問題