【发布时间】:2013-07-08 09:38:10
【问题描述】:
我的程序用这个函数打开一个套接字:
sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)
发送完数据后socket关闭:
关闭(sockfd);
但问题是程序运行不佳并阻塞时。因此套接字不会被关闭。
如何查看在 Linux 操作系统下打开的所有套接字?
【问题讨论】:
-
询问打开的“文件”列表 lsof
-
如果您需要在代码中处理,您应该维护一个有效套接字列表并在需要时关闭。
-
题外话,你应该检查socketfd的值(从socket返回)以获得更好的错误处理。
-
是的,每次创建socket时socket编号都是一样的!
-
如果一个进程终止,它的所有文件描述符都被关闭(由内核)。