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