免费注册 查看新帖 |

Chinaunix

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

sleep 100 < /proc/myfile [复制链接]

论坛徽章:
0
发表于 2008-09-21 21:16 |显示全部楼层
ldd P86:
The most important problem is with removal of /proc entries. Such removal may well
happen while the file is in use, as there is no owner associated to /proc entries, so
using them doesn’t act on the module’s reference count. This problem is simply trig-
gered by running sleep 100 < /proc/myfile just before removing the module, for example.

这里sleep 100 < /proc/myfile何解?

论坛徽章:
0
发表于 2008-09-21 21:48 |显示全部楼层
改写一下简单的hello,结果发现在2.6.23**上面,sleep的时候删除模块,则提示remove_proc_entry: /proc/myfile busy, count=1,但是在2.6.25**上面,没有任何错误提示,/proc中已经看不到myfile,不过却依然能够访问,比如ll /proc/myfile等,不过读这个myfile可能内核就报错了,而sleep结束后就不能再访问了,提示不存在了。

内核变化了?

[ 本帖最后由 怀恋在子夜 于 2008-9-22 10:52 编辑 ]

论坛徽章:
34
亥猪
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉鸡
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龙
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系统版块每日发帖之星
日期:2015-11-06 06:20:00操作系统版块每日发帖之星
日期:2015-11-08 06:20:00操作系统版块每日发帖之星
日期:2015-11-19 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13
发表于 2008-09-22 09:26 |显示全部楼层
等待100秒,然后导入/proc/myfile ?

论坛徽章:
0
发表于 2008-09-22 10:00 |显示全部楼层
不是这个意思。
如果这个文件不存在的话,回报错,如果存在的话,应该是先导入myfile作为参数传递给sleep,不过sleep不处理第二个参数,似乎是让这个文件在使用状态中,类似连接计数,防止删除模块入口的意思。
使用fuser可以看到文件状态的。

等sleep结束,就可以安全删除了?为什么?

[ 本帖最后由 怀恋在子夜 于 2008-9-22 10:52 编辑 ]

论坛徽章:
0
发表于 2008-09-23 08:36 |显示全部楼层
一开始也没看明白,呵呵 sleep 100 </proc/myfile
执行该命令时bash会打开/proc/myfile文件作为stdin传给sleep程序,直到sleep结束,而slee
p是不会处理该文件的。因此该命令的意思是保持打开文件/proc/myfile 100秒.再结合前面的那段e文,就知道是为了触发模块创建的proc入口在模块被卸载时仍被使用可能导致的问题。

论坛徽章:
34
亥猪
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉鸡
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龙
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系统版块每日发帖之星
日期:2015-11-06 06:20:00操作系统版块每日发帖之星
日期:2015-11-08 06:20:00操作系统版块每日发帖之星
日期:2015-11-19 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13
发表于 2008-09-23 19:56 |显示全部楼层
好像有一个 [ -f filename ],就是检验是否存在的么。
可以用shell解决的~

论坛徽章:
0
发表于 2008-09-24 14:50 |显示全部楼层
原帖由 qtdszws 于 2008-9-23 08:36 发表
一开始也没看明白,呵呵 sleep 100 </proc/myfile
执行该命令时bash会打开/proc/myfile文件作为stdin传给sleep程序,直到sleep结束,而slee
p是不会处理该文件的。因此该命令的意思是保持打开文件/proc/myfile 100秒.再结合前面的那段e文,就知道是为了触发模块创建的proc入口在模块被卸载时仍被使用可能导致的问题。


算是明白了,这个是用来演示这种错误的
刚开始还以为是在说一种解决办法呢,还在奇怪为什么非要100呢,以及100结束后别人的文件使用没结束该怎么办...

抱怨一句,这书没有W. Richard Stevens的书浅显易懂啊。
最后为自己寒一个,不过自己的英文实在是有待提高...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP