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