Сокеты accept () возвращают дескриптор блокировки или неблокирования? - PullRequest
4 голосов
/ 08 ноября 2011

Возвращается ли дескриптор сокета функцией accept() в режиме блокировки или неблокирования?

Ответы [ 2 ]

5 голосов
/ 08 ноября 2011

С man 2 accept:

   int accept4(int sockfd, struct sockaddr *addr,
               socklen_t *addrlen, int flags);

И далее вниз:

   If flags is 0, then accept4() is the same as accept().   The  following
   values can be bitwise ORed in flags to obtain different behavior:

   SOCK_NONBLOCK   Set  the  O_NONBLOCK  file  status flag on the new open
                   file description.  Using this flag saves extra calls to
                   fcntl(2) to achieve the same result.

Таким образом, я ожидаю, что дескриптор сокета, возвращаемый функцией accept (), будет в режиме блокировки.

4 голосов
/ 08 ноября 2011

Нет, сокеты не наследуют неблокирующее состояние от прослушивающего сокета. Вы должны сделать это, не блокируя себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...