|
问题是这样的:
在嵌入式linux中,插上摄像头,我有个程序开一个线程去不间断地采集视频数据,而主函数是做socket通信服务器端,将采集的视频数据发给客户端。当我拔掉摄像头时,问题就来了:采集视频数据的线程意外终止,并且在终端打印信息:
usb.c: USB disconnect on device 4。
但整个程序进程没有退出,通过ps可以看到进程,而当我再插上摄像头,linux也没探测到usb已插上。只有当我kill哪个进程后,linux才意识到有usb插上了,输出:
hub.c: USB new device connect on bus1/1, assigned device number 5
spca_core.c: USB SPCA5XX camera found. Type Vimicro Zc301P 0x303b
我不明白这是为什么?这个程序对linux探测usb有什么影响吗?难道是因为该程序一直占用着设备文件标识符的缘故?可当usb拔掉时,linux是已经知道USB disconnect ,为什么不终止整个进程,然后关闭设备文件,释放资源?
另外,当usb拔掉时,有什么机制能通知程序的主函数么?
请大侠多多解疑指点! |
|