inotify'main loop'

0 c linux

我通过在inotify文件描述符上设置O_ASYNC标志然后使用fcntl(inotifyfd,F_SETOWN,getpid())以及信号(sighandler,SIGIO)调用来使用inotify和"interupt io",所有这些都来自一个进程,为了设置inotify文件描述符事件处理程序.

我们的想法是让inotify的文件描述符生成SIGIO信号(通过O_ASYNC标志集)并让teh信号(..)注册处理程序处理SIGIO信号,因为它们被发射,从而避免轮询inotify文件描述符.

在初始设置和信号处理程序设置之后,该过程无关,并且通常会退出.

我需要在安装后保持空闲的相同进程,因为它充当等待SIGIO信号的守护进程.这是我寻求帮助的地方.

如何使进程闲置以获取最少量的cpu资源?

caf*_*caf 6

如果你的进程在看到inotify事件之前一直处于空闲状态,那么你就会严重过度复杂化.

只需read()对inotify文件描述符进行正常阻塞即可.当有inotify事件时,您的进程将被唤醒.如果你想阻止超时,那么你可以定期检查其他东西,使用select().

一般来说,我发现如果答案是"信号"那么你可能会问错误的问题:)