5

你能解释一下inotify机制吗?我在网上搜索过它,但我的理解是,如果我想查看文件中的更改,我必须使用“读取”功能进行轮询。当文件发生更改而不进行轮询时,是否有任何回调函数会通知我?

谢谢,

4

4 回答 4

2

我推测您正在使用一些为您处理事件的 GUI 库。

更好的 GUI 库有一种方法可以观察文件描述符。在 GTK 中,它是gtk_input_add_full;在 Qt 中,QSocketNotifier可能对你有用。

于 2010-11-01T09:10:26.760 回答
1

inotify 调用使用文件描述符。您可以在select()调用系列中使用返回的 FD,而不是轮询。它不完全是一个回调函数,但减少了您所关心的开销。

于 2010-11-01T16:34:25.730 回答
1

您可以使用 libev 库的 ev_io 部分。这将允许您在 inotify fd 可读时设置回调。

libev 的文档可以在这里找到:http://pod.tst.eu/http: //cvs.schmorp.de/libev/ev.pod

于 2011-04-20T18:59:26.137 回答
0

不,inotify 需要轮询。

使用信号注册回调(如建议的那样),IMO 比定期轮询更糟糕。

于 2010-11-01T08:50:11.097 回答