[英]Non-blocking mount in Linux
我在单线程进程中使用Linux的mount(2)
函数。 但是安装像CD-ROM这样的设备可能需要一段时间(最糟糕的是我看到的是40秒!),因为它会稍微思考,旋转磁盘,然后才会挂载文件系统。 这可能会阻止该过程在相当长的时间内处理其他事件。
我似乎找不到以非阻塞方式挂载文件系统的方法。 有没有办法异步挂载文件系统而无需多线程或分叉?
知道动作是否完整对我来说不是问题,因为我已经在同一个线程中阅读了内核uevents。
不。不启动另一个线程或fork()
,你必须等待mount()
返回。
如果您想以单线程方式执行此操作,则可以手动执行mount命令并对其进行后台处理,并使用select()或其他方式轮询完成。 但是,这是hackish,并且与在程序中分叉和调用mount()没有太大区别。
另外值得注意的是,我经历过mount()阻塞整个进程(以及关联的线程),因此对于真正的异步行为,分叉可能是要走的路。
您可以让安装过程在后台运行。 运行的东西像:
system("mount -a ");
做
system("mount -a &");
这将让mouning在后台为您完成。
但仔细观察后,此解决方案不使用C接口,而是使用系统接口
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.