c ++ linux accept () блокировка после закрытия сокета

У меня есть поток, который слушает новые соединения

new_fd = accept(Listen_fd, (struct sockaddr *) & their_addr, &sin_size);

и другой поток, который закрывает Listen_fd, когда пришло время закрыть программу. После того как Listen_fd закрыт, он все равно блокируется. Когда я использую GDB для отладки, accept () не блокируется. Я подумал, что это может быть проблема с SO_LINGER, но он не должен быть включен по умолчанию и не должен меняться при использовании GDB. Любая идея, что происходит, или любое другое предложение о закрытии сокета листинга?

Ответы на вопрос(4)

Ваш ответ на вопрос