一个线程在阻塞式的读一个文件,另外一个线程close这个文件时出现异常

yjpcn 2012-06-12 03:36:05
这个文件是tty驱动生成的,如果正常关闭会调用到tty驱动代码的tty_release的,

打开文件:rf_fd = open("/dev/ttyzb", O_RDWR);

一个线程在阻塞式的读取这个文件: ret = read(rf_fd, buffer, length);

关闭文件:close(rf_fd)
关闭文件时返回值为0,并且这时候再用rf_fd这个句柄读返回值为-1,说明已经关闭这个文件了,
可是在kernel里加打印,并没有调用到tty_release。
如果把那个读这个文件的线程去年,关闭的时候就能调用到tty_release,
因为需要在tty_release里做些东西,所以想找到为什么调不到tty_release。

哪们大侠知道原因??
...全文
187 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjpcn 2012-06-14
  • 打赏
  • 举报
回复
肯定关联了,
如果没有关联,如果那个线程不在读的话,也不会调用到tty_release的,

[Quote=引用 2 楼 的回复:]
我觉得应该是驱动里面没有关联close系统调用吧...
[/Quote]
yjpcn 2012-06-14
  • 打赏
  • 举报
回复
是线程,用pthread_create创建的,

[Quote=引用 1 楼 的回复:]
是线程?不是进程吧
[/Quote]
zjx311989 2012-06-12
  • 打赏
  • 举报
回复
我觉得应该是驱动里面没有关联close系统调用吧...
justkk 2012-06-12
  • 打赏
  • 举报
回复
是线程?不是进程吧

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧