如何安全地关闭一个fd



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

我是这样想的。

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

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

相关内容

  • 没有找到相关文章

最新更新