У меня есть поток, который прослушивает новые соединения
new_fd = accept(Listen_fd, (struct sockaddr *) & their_addr, &sin_size);
, и другой поток, который закрывает Listen_fd, когда пора закрыть программу. Однако после закрытия Listen_fd он все еще блокируется. Когда я использую GDB для отладки, accept () не блокируется. Я думал, что это может быть проблема с SO_LINGER, но он не должен быть включен по умолчанию и не должен меняться при использовании GDB. Есть идеи, что происходит, или какие-либо другие предложения по закрытию сокета листинга?