- 论坛徽章:
- 0
|
本帖最后由 dubin1114 于 2012-04-26 16:41 编辑
代码如下- #define _GNU_SOURCE /* needed to get the defines */
- #include <fcntl.h> /* in glibc 2.2 this has the needed
- values defined */
- #include <signal.h>
- #include <stdio.h>
- #include <unistd.h>
- static volatile int event_fd;
- static void handler(int sig, siginfo_t *si, void *data)
- {
- event_fd = si->si_fd;
- }
- int main(void)
- {
- struct sigaction act;
- int fd;
- act.sa_sigaction = handler;
- sigemptyset(&act.sa_mask);
- act.sa_flags = SA_SIGINFO;
- sigaction(SIGRTMIN + 1, &act, NULL);
- fd = open("/opt/dnotify", O_RDONLY);
- fcntl(fd, F_SETSIG, SIGRTMIN + 1);
- fcntl(fd, F_NOTIFY,DN_ACCESS|DN_MODIFY|DN_CREATE|DN_RENAME|DN_DELETE|DN_ATTRIB|DN_MULTISHOT);
- /* we will now be notified if any of the files
- in "." is modified or new files are created */
- while (1) {
- pause();
- printf("Got event on fd=%d\n", event_fd);
- }
- }
复制代码 以上代码对/opt/dnotify进行了监视。但是在改变被保护文件夹的权限时下面的系统反应不一样。
在redhat4 跟redhat5下:使用 chmod 444 /opt/dnotify 没有事件发生。
但是在redhat6下:同样适用chmod 444 /opt/dnotify 却有事件发生并且程序中断了。
这是为什么? |
|