1
我無法理解下面的代碼。當reservedFd_ == -2時,表示有兩個客戶端被接受,爲什麼?非常感謝你。open(「dev/null」,O_APPEND)的返回值是否表示打開的文件過多?
// In one function.
...
...
reservedFd_ = ::open("/dev/null", O_APPEND);
if (-1 == reservedFd_)
{
LOG_DEBUG("Failed to open reserved file!, errno: %d", errno);
}
...
...
...
----------------------------------------------------------------------
// then in other function we accept a new client socket
void TCPServer::HandleAccept(const boost::system::error_code& _err)
{
if (!_err)
{
// too many clients accepted? why?
if (-2 == reservedFd_)
{
boost::system::error_code ignored_ec;
session_->GetSocket().close(ignored_ec);
}
else
{
...
}
}
...
}
謝謝你的回答。也許我沒有清楚地描述它。 :: open(「/ dev/null」,O_APPEND)和(-2 == reservedFd_)不在同一個函數中。是否可能在打開/ dev/null成功後,系統在其他位置修改了reservedFd_的值?由於進程接受了太多的客戶端套接字? – kuangi