5-共享内存
1. 套接字超时 1.1 accept/read/write超时 如何设置accept()函数等待连接时的超时时长? 答: accept() 函数本身会一直阻塞到有连接请求而无法计时,因此可以设置由内核监听连接并计时。即由 select()/epoll()/poll() 函数来计时。 如何设置read()/write()的等待时长? 答: read() 函数要一直监测缓冲区中有数据才能解除阻塞读数据,因此可以同 accept() 函数一样,由内核监测。而 write() 函数要一直监测缓冲区未满才能解除阻塞写数据,因此也可以由内核检测。 //1.设置监听时间 fd_set rdset ; FD_ZERO ( & rdset ) ; FD_SET ( fd , & rdset ) ; struct timeval timeout = { 10 , 0 } ; //2.设置为内核检测 int ret = select ( fd + 1 , & rdset , % rdset , NULL , & timeout ) ; if ( ret == 0 ) //若无描述符变化 { //监测超时 } else if ( ret > 0 ) //若有变化 { //accept则接受链接 struct sockaddr addr ; int len = sizeof ( addr ) ; int