免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2096 | 回复: 3

[文件系统] 关于进程退出时未关闭设备的问题 [复制链接]

论坛徽章:
0
发表于 2012-12-11 10:57 |显示全部楼层
在进程中打开了一个设备如下:
fd = open("/dev/my_device", O_RDWR|O_NOFOLLOW, 0644);
由于进程可能在任意的情况下被关闭或杀死,所以没有办法加上close(fd)并保证其一定被执行,如果这样,系统是否会在进程退出时自动关闭这个设备?
进程退出后监视程序会重新启动这个进程,如果之前设备没有被关闭,这里该如何判断并关闭它?由于特殊要求,如果设备未关闭,必须先关闭一下再打开。

请大家帮忙看看, 谢谢!


论坛徽章:
0
发表于 2012-12-11 11:29 |显示全部楼层
系统会close那个fd,因为所有资源都要回收。

至于close那个fd会不会引发设备状态重置,这个要看驱动程序。一般的驱动程序都会重置设备状态,但是不一定会在第一时间,比如程序退出的时候设备还有数据要处理,驱动可能等处理完之后再重置状态。这种情况一般的做法是驱动会让下一次的open延时到设备重置之后。这样从程序的角度来看是不存在“状态延迟”的。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2012-12-11 12:06 |显示全部楼层
回复 1# eagerbever_m
操作系统会帮你做好这个工作的

   

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
发表于 2012-12-11 14:32 |显示全部楼层
系统会作回收。可以考虑捕获sigterm等信号,作相应处理,但是sigkill不能捕获。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP