首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要/proc/self/fd/"data->fd"?

为什么要/proc/self/fd/"data->fd"?
EN

Stack Overflow用户
提问于 2014-04-27 16:20:04
回答 1查看 322关注 0票数 2

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

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

代码语言:javascript
复制
    res = read (fan_fd, buffer, 4096);
    ...
    data = (struct fanotify_event_metadata *) buffer;
    while (FAN_EVENT_OK (data, res)) {
        ...
        data = FAN_EVENT_NEXT (data, res);
    }

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

代码语言:javascript
复制
   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/"data->fd"中提取的

EN

回答 1

Stack Overflow用户

发布于 2014-05-14 14:47:12

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23333723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档