Почему сокет Unix все еще существует, несмотря на то, что на него не ссылается дескриптор файла процесса?Linux

Ответить
Anonymous
 Почему сокет Unix все еще существует, несмотря на то, что на него не ссылается дескриптор файла процесса?

Сообщение Anonymous »

Я имею дело с многопоточным приложением, поток которого открывает локальный сокет домена Unix и привязывает его к абстрактному адресу. Оказывается, этот поток необходимо завершить и создать заново. Теперь, несмотря на закрытие сокета, а также отмену и присоединение потока без ошибок, вызов связывания в перезапущенном потоке возвращает адрес ошибки, который уже используется. В этой ситуации netstat -pax показывает e. г.
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path

unix 2 [ ] DGRAM CONNECTED 17650 - @@@@PCOS@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


для адреса. После этого I-узел больше не появляется в выводе команды ls -l /proc/*/fd. Я отмечаю, что RefCnt по-прежнему равен 2, но как я могу увидеть, кто или что ссылается на эту вещь? И как мне освободить адрес и привязать к нему заново?
Linux axcf3152 6.1.107-rt39-pxc #1 SMP PREEMPT_RT Wed May 28 14:14:49 UTC 2025 x86_64 GNU/Linux


Подробнее здесь: https://stackoverflow.com/questions/798 ... descriptor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»