我如何从 shell 中看到设置了哪些套接字选项?尤其是 我很想知道是否设置了 SO_BROADCAST?
最佳答案
您可以使用 lsof(8)
.如果 PID
是进程 ID,FD
是您感兴趣的套接字的文件描述符编号,您可以这样做:
lsof -a -p PID -d FD -T f
列出进程的所有 IPv4 套接字:
lsof -a -p PID -i 4 -T f
这将打印出带有 SO=
的套接字选项,以及其他信息。请注意,如果未设置任何选项,您将得到空字符串,因此您会看到类似 SO=PQLEN=0
等的内容。要测试 SO_BROADCAST
,只需SO=
之后的字符串 SO_BROADCAST
的 grep,例如
if lsof -a -p PID -d FD -T f | grep -q 'SO=[^=]*SO_BROADCAST'; then
# socket has SO_BROADCAST
else
# it doesn't
fi
关于linux - 显示套接字选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1824115/