你能解释一下inotify机制吗?我在网上搜索过它,但我的理解是,如果我想查看文件中的更改,我必须使用“读取”功能进行轮询。当文件发生更改而不进行轮询时,是否有任何回调函数会通知我?
谢谢,
我推测您正在使用一些为您处理事件的 GUI 库。
更好的 GUI 库有一种方法可以观察文件描述符。在 GTK 中,它是gtk_input_add_full;在 Qt 中,QSocketNotifier可能对你有用。
inotify 调用使用文件描述符。您可以在select()调用系列中使用返回的 FD,而不是轮询。它不完全是一个回调函数,但减少了您所关心的开销。
您可以使用 libev 库的 ev_io 部分。这将允许您在 inotify fd 可读时设置回调。
libev 的文档可以在这里找到:http://pod.tst.eu/http: //cvs.schmorp.de/libev/ev.pod
不,inotify 需要轮询。
使用信号注册回调(如建议的那样),IMO 比定期轮询更糟糕。