- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在文件被修改时使用 inotify_add-watch() 获取通知 (inotify_add_watch (fd, filename.c_str(), IN_MODIFY);) 在 linux 文件系统上(linux 内核 4.9.0)。
但是在收到通知后,read() 预计会调用两次,直到我收到文件/etc/temp 的下一次修改通知。有人可以澄清为什么我需要调用 read() 两次吗?谢谢。
int fd, wd;
fd = inotify_init ();
if (fd < 0)
{
perror ("inotify_init () = ");
}
else
{
std::string filename = "/etc/test";
wd = inotify_add_watch (fd, filename.c_str(), IN_MODIFY);
if (wd < 0)
{
perror ("inotify_add_watch");
}
else
{
char* buffer = new char[1024];
while(true)
{
//first read blocks until the /etc/temp file is modified,
//it returns 16 which is sizeof(struct inotify_event)
printf("first read %d), read( fd, buffer, 1024));
//second read() does not block and read returns 16 again
printf("second read %d), read( fd, buffer, 1024));
}
}
最佳答案
在它再次开始阻塞之前,您必须消耗所有未决事件。
当你例如执行 echo foo >/etc/test
,您可能会得到两个事件:一个用于截断,一个用于写入。
如果你两个都不消费,下一个会立即返回。
关于linux - 为什么需要用 inotify_add_watch() 调用 read() 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51902640/
我正在尝试将“inotify_add_watch”用于进程。我这样做的目的是在进程被终止时收到通知。 我的通知代码是, wd = inotify_add_watch(ifd, "/proc",IN_A
inotify_add_watch 返回一个 int。 我想将正在观察的路径的字符串存储在一个数组中,并希望通过 inotify_add_watch 的返回值对它们进行索引。 我做了一个小规模测试(有
我想监控目录/文件的更改。如果我想监控说只有 5 个事件用下面的面具 IN_OPEN IN_CREATE IN_DELETE IN_CLOSE_WRITE 例如, 我必须在每个掩码上调用 inotif
我正在尝试在我的 c/c++ 程序中观察文件的创建。我正在尝试为此目的使用 inotify。但是,我收到了 no such file or directory当我制作 inotify_add_watc
我不明白inotify事件的进展。我知道 inotify_init 是创建新的 inotify 实例。并返回文件描述符。此时。文件描述符是关于什么的? 在我的代码中,函数 inotify_add_wa
我正在使用 QtCreator 和 Qt for android。 我试图在 android 上使用 QFileSystemModel 制作一个文件对话框应用程序。 我正在我的手机 (HTC A9)
我正在使用 inotify和 INOTIFY_ADD_WATCH()监视多个目录上的事件。是否可以使用循环添加多个文件路径(目录)。我有以下示例代码,但没有收到任何通知。 示例代码: #include
在 Linux 2.6.16 上,inotify_add_watch如果路径不存在,则会失败并将 errno 设置为 ESUCCESS (0)。这是在哪里记录的? 最佳答案 我的 ctypes 中有一
我正在尝试调用 inotify_add_watch观看文件。我想指定相对于 O_PATH | 的文件O_DIRECTORY 文件描述符,la symlinkat , fstatat , 或 opena
我已经在最小的 Debian Wheezy 下安装了 lxc-docker-1.5.0。我还安装了 apparmor,并使用 grub 的 linux 默认命令行变量中的参数“apparmor=1 s
我正在尝试在文件被修改时使用 inotify_add-watch() 获取通知 (inotify_add_watch (fd, filename.c_str(), IN_MODIFY);) 在 lin
我在 Linux 中使用了 inotify,以便在网络接口(interface)链接发生变化时引发事件。每当接口(interface)链接更改时,/sys/class/net/eth40/operst
我是一名优秀的程序员,十分优秀!