- 论坛徽章:
- 0
|
本帖最后由 wu1990 于 2011-09-30 16:53 编辑
看错循环嵌套了。。Sorry!!- char buffer[1024];
- char * offset = NULL;
- int len, tmp_len;
- while(len = read(fd, buffer, MAX_BUF_SIZE)) {
- offset = buffer;
- printf("Some event happens, len = %d.\n", len);
- event = (struct inotify_event *)buffer;
- while (((char *)event - buffer) < len) {
- if (event->mask & IN_ISDIR) {
- memcpy(strbuf, "Direcotory", 11);
- }
- else {
- memcpy(strbuf, "File", 5);
- }
- printf("Object type: %s\n", strbuf);
- for (i=0; i<WD_NUM; i++) {
- if (event->wd != wd_array[i].wd) continue;
- printf("Object name: %s\n", wd_array[i].name);
- break;
- }
- printf("Event mask: %08X\n", event->mask);
- for (i=0; i<EVENT_NUM; i++) {
- if (event_array[i][0] == '\0') continue;
- if (event->mask & (1<<i)) {
- printf("Event: %s\n", event_array[i]);
- }
- }
- tmp_len = sizeof(struct inotify_event) + event->len;
- event = (struct inotify_event *)(offset + tmp_len);
- offset += tmp_len;
- }
- }
复制代码
代码大概如上, 最后这三句有什么用?
tmp_len = sizeof(struct inotify_event) + event->len;
event = (struct inotify_event *)(offset + tmp_len);
offset += tmp_len; |
|