У меня застряли сокеты в close_wait, когда два моих демона общаются друг с другом. Прочитав различные вопросы и записи в блоге на эту тему, я убедился, что закрываю сокет с обеих сторон (отправитель и получатель).
Модель выглядит следующим образом:
Отправитель:
установить соединение, отправить данные, дождаться подтверждения, закрыть соединение
Получатель:
получить соединение, прочитать данные, отправить подтверждение, закрыть соединение
Может кто-нибудь сказать мне, что я делаю не так? Примечание: я использую close (), чтобы закрыть соединения прямо сейчас. Я тоже пытался использовать shutdown, и это ничего не изменило. Любые советы будут с благодарностью.
EDIT:
Вскоре после закрытия сокета, получающий демон разветвляется. Я попытался передать дескриптор файла в функцию, которая разветвляется, и явно закрыть его снова в дочернем процессе, но это не решило мою проблему. Есть ли другой способ, которым разветвление может повлиять на этот процесс? Обратите внимание, что демон-отправитель не разветвляется.