У меня есть сетевой демон (poll () / accept () / fork () style), который пропускает дескрипторы файлов сокетов, по одному на клиента в состоянии TIME_WAIT.
Насколько я вижу, я могу выключить () и затем закрыть () определенно ненужных сокетов. Другие сокеты (например, сокет сервера на стороне клиента форка) просто закрываются (). Для всех сокетов установлен SO_REUSEADDR, а SO_LINGER выключен. Я использую _exit () для выхода из программы, и я использую неблокирующие операции сокетов опроса, чтобы установить флаг '' умирающий '' в моем обработчике сигналов - это позволяет мне позже взять флаг умирания и освободить ( ), shutdown (), close (), которые в противном случае были бы опасны в обработчике сигналов.
Но все же утечка fd - Каков наилучший способ отладки такого рода проблемы? Было бы полезно узнать, какой сокет слоняется на выходе, так как в этом процессе задействовано много fds.
Ура!