我想接受系统调用为非阻塞。如何将接受系统调用视为非阻塞?

时间:2013-02-06 12:23:16

标签: c linux

这是我正在使用的声明:

m_stat_arr_nClient_sockfd[nIndex]= accept(nServerSocket,(struct sockaddr *)&client_address, (socklen_t *)&client_len);

这是一个阻止调用,那么如何才能使这种非阻塞?

1 个答案:

答案 0 :(得分:4)

您必须使用fcntl设置nServerSocket非屏蔽;

int flags = fcntl(nServerSocket, F_GETFL, 0);
fcntl(nServerSocket, F_SETFL, flags | O_NONBLOCK);

完成此操作后,对该套接字上的accept()的调用将不再阻止。