在文件描述符管理中,如果失败,需要关闭文件描述符,可以使用 RAII
class FdGuard
{
public:
FdGuard()
{
_fd = -1;
}
FdGuard(int _fd):fd(_fd){}
~FdGuard()
{
if (_fd >= 0)
{
close(_fd);
_fd = -1;
}
}
void reset()
{
if (_fd >= 0)
{
close(_fd);
_fd = -1;
}
}
void reset(int fd)
{
reset();
_fd = fd;
}
int release()
{
int preFd = _fd;
_fd = -1;
return preFd;
}
private:
FdGuard(const FdGuard&);
FdGuard& operator=(const FdGuard&);
private:
int _fd;
};