繁体   English   中英

Linux中的非阻塞安装

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM