题
我使用Linux mount(2)
功能在单线程处理。但是,像CD-ROM设备的设备安装可能需要一段时间(我见过的最差的为40秒!),因为它会思考了一下,启动磁盘,然后才将挂载文件系统。这可以从处理其它事件相当长的时间块的过程。
我似乎不能找到一种方法在一个非阻塞方式挂载文件系统。的有一种方法来异步挂载文件系统没有多线程或分叉吗
了解操作是否完成并不是我的问题,我已经在同一个线程读取内核uevents。
解决方案
没有。兵不血刃了另一个线程或fork()
ing,你必须等待mount()
返回。
其他提示
如果你想这样做在单线程方式,可以手动执行mount命令和背景,并使用选择()或东西轮询完成。然而,这是hackish的和从分叉和程序内调用安装()差别不大。
另外值得一提的是,我已经经历了安装()阻塞的整个过程(以及相关的线程),所以对于真正的异步行为,分叉可能是要走的路。
您可以让在后台运行安装程序。 运行财产以后像的insted的:
system("mount -a ");
待办事项
system("mount -a &");
这将让在后台mouning完整的你。
但看有点接近后,这种解决方案不使用C接口,但系统接口
不隶属于 StackOverflow