fd"?-6ren"> fd"?-我正在检查当前 fatrace 的源代码。 调用fanotify获取数据值的主循环如下: res = read (fan_fd, buffer, 4096); ... data-6ren">
gpt4 book ai didi

linux - fanotify获取文件名,为什么/proc/self/fd/"data->fd"?

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

我正在检查当前 fatrace 的源代码。

调用fanotify获取数据值的主循环如下:

    res = read (fan_fd, buffer, 4096);
...
data = (struct fanotify_event_metadata *) buffer;
while (FAN_EVENT_OK (data, res)) {
...
data = FAN_EVENT_NEXT (data, res);
}

当提取与事件关联的文件名时,代码如下所示:

   snprintf (printbuf, sizeof (printbuf), "/proc/self/fd/%i", data->fd);
len = readlink (printbuf, pathname, sizeof (pathname));

我很困惑为什么文件名是从 /proc/self/fd/"data->fd" 而不是 /proc/"data->pid"/fd/"数据->fd"?

最佳答案

这是因为 data->pid 是一个不同的进程,具有不同的文件描述符集。 fanotify返回的data->fd在当前进程有效,不是被监控的进程。

关于linux - fanotify获取文件名,为什么/proc/self/fd/"data->fd"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23333723/

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