2016-12-01 22 views
5

Tôi có một số mã di sản mà thực hiện điều này ở khắp mọi nơi:Trình mô tả tệp không hợp lệ làm gì?

int fd; // open a file 

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

này trông rất không đúng với tôi.

Đóng trình mô tả tệp không hợp lệ?

+0

* Điều này có vẻ rất sai với tôi. * Đồng ý. "Suy nghĩ" đằng sau mã đó chắc hẳn là ... thú vị. –

Trả lời

4

Theo thủ công:

Sau khi hoàn thành, giá trị 0 được trả về. Nếu không, giá trị của -1 được trả về và biến số nguyên chung errno được đặt để cho biết lỗi.

và sau đó:

The close() system call will fail if: 

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

Sau đó, không có gì có hại sẽ xảy ra.

4

Nó trả về mã lỗi. Không có gì là sai nhưng cũng không hữu ích vì không có séc nào được thực hiện trên giá trị return.

Trích dẫn trở về man page

Return Value

close() số không thành công. Khi lỗi, -1 được trả về và errno được đặt một cách thích hợp.

lỗi

EBADF
fd không phải là một bộ mô tả tập tin mở hợp lệ.

Các vấn đề liên quan