如何安全地关闭fd

时间:2014-08-21 05:29:21

标签: file unix file-descriptor

这可能是一个基本问题。如何安全地关闭fd?

我在想这个。

void safe_close(int *fd) {
    if (*fd >= 0) {
        close(*fd);
        *fd = -1;
    }

    return;
}

1 个答案:

答案 0 :(得分:1)

问题是基本但非常重要的问题,您的解决方案对我来说非常好。有一点需要注意的是,你的fd是按值传递的,因此值-1的更改不会反映在调用方法中。另外,根据close()上的Linux手册页,检查close()的返回值很重要。它说很可能在最后的close()中首先报告先前write()操作的错误。"如果在关闭期间发生错误,您的方法应该至少打印一条消息,以便可以跟踪任何数据丢失。