我之前都是用以下方法来将套接字设置为非阻塞状态:
fcntl(fd, F_SETFL, O_NONBLOCK);
其实上面这种做法只对了一半,因为这操作可能就将fd绑定的其他标志位清除,最理想的做法是:
int flags = fcntl(fd, F_GETFL);
fcntl(fd, F_SETFL, O_NONBLOCK | flags);
我之前都是用以下方法来将套接字设置为非阻塞状态:
fcntl(fd, F_SETFL, O_NONBLOCK);
其实上面这种做法只对了一半,因为这操作可能就将fd绑定的其他标志位清除,最理想的做法是:
int flags = fcntl(fd, F_GETFL);
fcntl(fd, F_SETFL, O_NONBLOCK | flags);