gpt4 book ai didi

c - 在 procfs 文件上选择函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:31 25 4
gpt4 key购买 nike

我正在寻找解决此类问题的方法。我想使用 select 监视 procfs 文件的更改(我想使用 select,而不是 i_notify,因为我观察了套接字的另一个描述符).

我试过这样的东西:

fd1 = open("/proc/my_file", O_RDONLY, 0);
FD_ZERO(&rfds);
FD_SET(fd1, &rfds);

tv.tv_sec = 500;
tv.tv_usec = 0;
retval = select(fd1+1, &rfds, NULL, NULL, &tv);

这是错误的,因为文件总是准备好读取。如果使用 select 对文件进行了任何更改,如何通知我?

最佳答案

select(2) 不报告“更改”,而是“准备阅读”。来自OpenGroup select() manpage :

File descriptors associated with regular files always select true for ready to read, ready to write, and error conditions.

内核提供的文件有点奇怪——它们不完全是“常规文件”——但select(2) 不是确定更改的工具在这些文件中。

如果你想发现变化,那么你必须使用 inotify(7)。虽然如果不是 procfs(5) 中的所有文件都使用这种机制,我真的不会感到惊讶——当它们的基础数据发生变化时,许多文件可能不知道。考虑 /proc/loadavg —— 它可能会在您每次阅读时发生变化,但是通过 inotify(7) 使这些变化可见是没有实际意义的。

关于c - 在 procfs 文件上选择函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8527772/

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