Linux中的非阻塞装载

我在单线程的过程中使用Linux的mount(2)函数。 但是像CD-ROM这样的设备设备的安装可能需要一段时间(最糟糕的是我已经看到了40秒!),因为它会思考一下,旋转磁盘,然后才会挂载文件系统。 这可能会阻止该进程在相当长的时间内处理其他事件。

我似乎无法find一种方式来以非阻塞的方式安装文件系统。 有没有办法asynchronous挂载文件系统没有multithreading或分叉?

知道行动是否完成对我来说不是一个问题,因为我已经在同一个线程中读取了内核uevents。

不需要。不需要启动另一个线程或fork() ,您必须等待mount()返回。

你可以让安装过程在后台运行。 缺乏跑步的东西,如:

 system("mount -a "); 

 system("mount -a &"); 

这将让你的背景完成。

但是仔细看后,这个解决方案不使用C接口,而是使用系统接口

如果你想以单线程的方式来完成,你可以手动执行mount命令,并使用select()或者其他方法轮询完成。 然而,这与你的程序中的分叉和调用mount()没什么两样。

另外值得注意的是,我经历了mount()阻塞整个进程(和相关的线程),所以对于真正的异步行为,分叉可能是要走的路。