V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lestly  ›  全部回复第 1 页 / 共 1 页
回复总数  12
2022-11-18 10:06:20 +08:00
回复了 lestly 创建的主题 Linux socket 释放失败
@tomychen 多谢,我又学到一点
2022-11-11 18:00:14 +08:00
回复了 lestly 创建的主题 Linux socket 释放失败
@liqinliqin 能确定执行了 close ,因为加了打印。但是在 /proc/pid/fd 却看到句柄还被占用着
2022-11-11 10:29:28 +08:00
回复了 lestly 创建的主题 Linux socket 释放失败
@liqinliqin 可能嵌入式设备并不支持这个
2022-11-11 10:28:55 +08:00
回复了 lestly 创建的主题 Linux socket 释放失败
@oceanthe1h 我的这个程序应该不存在父子进程这个场景,不过我会留意一下你说的这个点
2022-11-11 10:24:46 +08:00
回复了 lestly 创建的主题 Linux socket 释放失败
@Mohanson 我明白了
2022-11-08 15:43:45 +08:00
回复了 lestly 创建的主题 Linux close 异常
@ihciah 我的实现是这样的 A 线程创建 socket ,添加链表到 B 线程负责网络处理,我想这样应该不会引起多线程的占用 socket 的问题。我刚试了下,请求结束后,关闭连接时先 shutdown ,在 close ,还是会出现句柄释放不成功。
这是我在 /proc/pid/fd ls -l 操作的结果
lrwx------ 1 lestly lestly 64 11 月 8 15:25 10 -> 'socket:[208718]'
close 后变成
lr-x------ 1 lestly lestly 64 11 月 8 15:25 10 -> 'pipe:[208751]'
2022-11-08 15:05:36 +08:00
回复了 lestly 创建的主题 Linux EPOLL
@BingoXuan 是的,在我自己的测试 server 上,server 关闭,我的 epoll 客户端程序能收到 EPOLLIN ,并且我在测试 server 上直接 kill 掉,会发送 rst ,epoll 客户端也能收到 EPOLLERR 、EPOLLHUP 、EPOLLIN 、EPOLLOUT 。但是这一切当我把测试 server 换成公司的服务器就不同了,我只能正常在握手成功后收到 EPOLLOUT ,有数据接收收到 EPOLLIN 。无论怎样都收不到 EPOLLERR 和 EPOLLHUP 。我的 EPOLL 事件初始化是 stEvent.events = EPOLLOUT | EPOLLERR | EPOLLIN 。
2022-11-08 15:00:45 +08:00
回复了 lestly 创建的主题 Linux close 异常
2022-11-08 15:00:25 +08:00
回复了 lestly 创建的主题 Linux close 异常
@ihciah 多谢,我试试
2022-11-08 14:18:12 +08:00
回复了 lestly 创建的主题 Linux close 异常
@ihciah 句柄是同一个 iNode ,只不过 ls -l 后原本描述的 socket 变成 pipe ,并且程序再也无法使用这个句柄
2022-11-08 14:16:57 +08:00
回复了 lestly 创建的主题 Linux close 异常
@leonshaw 应该没有,程序只运行了很少模块。
2022-11-08 14:15:12 +08:00
回复了 lestly 创建的主题 Linux close 异常
@ho121 netstat 检查了,不是 TIME_WAIT
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2769 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 16ms · UTC 13:03 · PVG 21:03 · LAX 05:03 · JFK 08:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.