Вы можете использовать lsof(8)
. Если PID
- это идентификатор процесса, а FD
- это номер дескриптора файла интересующего вас сокета, вы можете сделать это:
lsof -a -p PID -d FD -T f
Чтобы отобразить все сокеты IPv4 процесса:
lsof -a -p PID -i 4 -T f
Это напечатает опции сокета с SO=
, среди прочего. Обратите внимание, что если параметры не заданы, вы получите пустую строку, поэтому вы увидите что-то вроде SO=PQLEN=0
и т. Д. Чтобы проверить SO_BROADCAST
, просто grep для строки SO_BROADCAST
после SO=
, например
if lsof -a -p PID -d FD -T f | grep -q 'SO=[^=]*SO_BROADCAST'; then
# socket has SO_BROADCAST
else
# it doesn't
fi