设备操作异常,出错崩溃该如何解决?
设备操作异常,出错崩溃该如何解决?
Q:
装载应用程序执行, 为什么在程序退出时, 系统崩溃或者不稳定?
创建的一个设备
例如:
创建 /dev/abc 当应用程序打开设备文件正在操作时, 我调用 iosDevDelete 卸载设备,
此时应用程序如果再操作这个已经打开的设备文件可能会出错或者崩溃.
设备删除一般有两个方法:
1. 单独的设备删除函数, 例如: pipe, can... 他们都会有一个独立的设备删除函数. 调用此函数将会删除设备文件
2. 将设备删除函数装入驱动程序表的 remove 函数指针, 当调用 remove() / unlink() 函数删除设备文件时, 系统将自动调用对应驱动程序的 remove 函数.
例如: Fat 文件系统设备
这两种方法的设备删除过程比较类似, 需要做以下几个步骤:
1、调用 iosDevFileAbnormal() 使打开此设备的文件转换为异常模式, 此时, 所有打开此设备的文件均不可能再次访问设备.
iosDevFileAbnormal() 相当关键!
2、iosDevDelete() 移除设备.
如果设备存在 select() 功能时, 需要加入如下过程:
3、SEL_WAKE_UP_LIST_TERM(...) 结束 select() 等待队列.