gpt4 book ai didi

c++ - inotify 描述符上的读取被永远阻塞

转载 作者:行者123 更新时间:2023-11-30 17:51:58 26 4
gpt4 key购买 nike

我的程序使用 inotify用于监视文件的更改。我的代码如下:

    fd = inotify_init();
wd = inotify_add_watch(fd, "./test.txt", IN_ALL_EVENTS);
len = read(fd, buff, BUFF_SIZE);
while (i < len) {
struct inotify_event *pevent = (struct inotify_event *) &buff[i];
//process events
i += sizeof(struct inotify_event) + pevent->len;
}

但是,在我收到受监视文件中第一次更改的多个事件之后(事件 IN_OPENIN_MODIFYIN_ACESS 等) ,受监视文件的后续更改确实会生成任何其他事件==>我的程序在读取函数处挂起(读取被阻止)

你们能帮我解释一下这个错误吗?

最佳答案

请显示“./test.txt”实际发生了什么操作以及有关您的代码的更多信息(buff、BUFF_SIZE)。这里有一些要点需要您检查:

  • 有一些特殊事件,例如 IN_IGNORED,可能会从文件中删除 watch
  • 我建议使用 select/poll/epoll 来监控 fd,而不是 BLOCKING 读取它。

关于c++ - inotify 描述符上的读取被永远阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16411358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com