2013-03-04 83 views
0

我需要使用文件描述符来监视常规文件上的事件。我正在使用CentOS 4.1和内核版本2.6.18.128。使用旧的glibc监视Linux中的文件更改

在意识到使用epoll无法监视常规文件后,我发现可以使用inotify完成此任务。但是,我在其他地方看到,inotify所需的库接口已添加到版本2.4中的glibc,并且我的机器已安装2.3.4版。所以我的内核通过不glibc来获得支持。不幸的是,我不能更新glibc到一个较新的版本,因为它会打破项目的某些其他部分。

所以我的问题是:

  1. 我还可以使用inotify监测常规文件?我可以获取更新版本的glibc并将其放置在本地文件夹(相对于我的代码)中,将路径包含在我的Makefile中并使用与inotify关联的调用?如果是这样,我会遇到什么样的问题?
  2. 通过跟踪struct stat结构的st_mtime成员,可以选择使用fstat。任何警告反对采取这条路线?

如果我的问题表明对这些概念有任何缺乏理解,请在我刚刚开始使用这些概念时忍受。

回答

1

为2的glibc看到下面的帖子: Multiple glibc libraries on a single host

否则的inotify似乎直接的解决方案。

+0

感谢您的链接!一个澄清,因为我仍然在某个点上感到困惑。我参与的项目的其他部分将使用旧的glibc,因为我是唯一需要更新版本的人。我可以使用两个不同版本的glib来构建单个项目吗?这不会造成一些问题吗? – SidR 2013-03-04 06:56:55

+0

那么你有什么具体功能需要更老的glibc吗?你不能链接到2个不同的库版本,这将是编译器的恶劣条件。 – 2013-03-04 07:00:00

+0

只需添加您可以有2个不同的链接的应用程序,并通过ifdef宏与GLIBC版本控制调用。 – 2013-03-04 07:02:39