BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #7804同步于 2010/3/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

请问如何在内核中删除一个文件

wsycqyz
2010/3/17镜像同步11 回复
我想在按了板子的reset键后就在中断线程里把一个文件删除了就重启,请问有什么办法吗?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
hobby机器人#1 · 2010/3/17
你按reset的时候,内核应该在不知情的情况下就挂掉了然后重新引导吧?(我的意思是说linux内核不知道你是按的reset,也就是说,对于内核reset跟突然断电后重新引导没差别吧) 不过这个问题的处理我倒是有个想法,不知道可行性如何 你可以把reset信号怎么处理下引到一个中断管脚上(例如:可以把reset“封装”一下,弄一个其他的按键,按键作用时产生中断,按键产生的信号经过一个延时单元接到reset管脚),对于此中断,其处理函数的作用就是删除你的那个文件 PS:之前的项目中有类似的内容,我们板子上的电源芯片发现电源要掉的时候会有一个中断报给CPU,这时CPU可以选择性的把一些急需处理或保存的事情做了,好像叫什么dying grasp,你可以找找类似的资料。
SandFlee机器人#2 · 2010/3/17
【 在 wsycqyz 的大作中提到: 】 : 我想在按了板子的reset键后就在中断线程里把一个文件删除了就重启,请问有什么办法吗? sys_unlink? 找找删文件的系统调用,在内核中找相应的函数
ArmStrong机器人#3 · 2010/3/18
你可以写一个应用程序,监听这个中断,中断发生后删除文件,这样很省事 不过你这个中断如何实现呢?按reset键可以中断,延时吗?还没有听说过这样的用法 【 在 wsycqyz (萨达姆) 的大作中提到: 】 : 我想在按了板子的reset键后就在中断线程里把一个文件删除了就重启,请问有什么办法吗?
SandFlee机器人#4 · 2010/3/18
【 在 ArmStrong 的大作中提到: 】 : 你可以写一个应用程序,监听这个中断,中断发生后删除文件,这样很省事 : 不过你这个中断如何实现呢?按reset键可以中断,延时吗?还没有听说过这样的用法 应用程序可以监听中断?
ssailing机器人#5 · 2010/3/18
【 在 hobby 的大作中提到: 】 : 你按reset的时候,内核应该在不知情的情况下就挂掉了然后重新引导吧?(我脚),对于此中断,其处理函数的作用就是删除你的那个文件 : ................... 好方案 [em68] 现在的关键是让内核在掉电之前捕获到这个中断 内核态可以直接操作文件 无需再写应用程序从内核中获得这个消息 filp_open/write 这些都是内核态的文件读写函数接口
ArmStrong机器人#6 · 2010/3/19
写个驱动注册个设备呗 【 在 SandFlee (龙之弈) 的大作中提到: 】 : 应用程序可以监听中断?
ArmStrong机器人#7 · 2010/3/19
学习了,内核还有这样的函数啊 不过关键的问题是按reset是不会有中断发生的,cpu中断资源这么紧张,不会为这个留 中断的,我仔细看过TI达芬奇系列的两款CPU,确实都没有 【 在 ssailing (sailing) 的大作中提到: 】 : 好方案 [em68] : 现在的关键是让内核在掉电之前捕获到这个中断 : 内核态可以直接操作文件 无需再写应用程序从内核中获得这个消息 : ...................
hobby机器人#8 · 2010/3/19
从中断的使用上来说,为了实现LZ的这种需求,那必须躲不开要使用中断了吧 对于这种异步的事件,而且要求很快的响应速度(系统中reset按下后,OS赶紧处理一下就得shutdown了),只能中断了吧 不过退一步讲,我觉得需求还有必要探讨。如果LZ的根本需求(目标)不是单纯删除这个文件,而是做其他的事情,那么可以有所变通嘛(毕竟,中断资源总是紧张,而且我提的方案还是需要硬件上做点儿修改)。 例如:如果你着急删这个文件担心影响下次启动,那么在系统引导后,就对相应的启动脚本或者其他东东配置一下,把对应的文件改个名字,挪个地方就行了嘛(这样kernel找不到了,效果跟删了也差不多)。也就是说,是不是可以在系统引导时候再做这些删除的动作。 【 在 ArmStrong 的大作中提到: 】 : 学习了,内核还有这样的函数啊 : 不过关键的问题是按reset是不会有中断发生的,cpu中断资源这么紧张,不会为这个留 : 中断的,我仔细看过TI达芬奇系列的两款CPU,确实都没有
wsycqyz机器人#9 · 2010/3/19
更新一下,首先谢谢各位的回贴。 我的系统中已经有一个中断处理函数,来向应这个reset中断,其实reset button只是一个中断源,没有真的接到CPU的reset管脚上。内核专门有一个ISR来响应这个中断,默认下直接使用另一个函数就把系统重启了。 我现在在这个ISR中使用kernel_thread来启动了另一个函数,来规避ISR中很多不能做的事, 我试着使用sys_unlink,至于call_usermodehelper来删除文件,但是都使得系统panic了。。。。。