Linux Access /proc/<pid>/ns/pid -> inode number



我正在尝试访问pid命名空间的inode编号,可以使用ls -Li /proc/<pid>/ns/mnt/proc/<pid>/ns/pid查看。

我是内核代码的新手,想知道在内核中,从current任务结构中我如何获得这个值?一些代码确实会有所帮助。

可以在当前任务结构中查找pid_namespace结构,该结构具有以下字段proc_inum:

task_active_pid_ns(current)->proc_inum;

编辑:从内核3.19版本开始,pid_namespace结构体收到了一个更新,其中包括添加头文件中定义的ns_common结构体:/include/linux/ns_common.h

ns_common结构体定义如下:

struct ns_common {
    atomic_long_t stashed;
    const struct proc_ns_operations *ops;
    unsigned int inum;
};

新的pid_namespace结构体被定义为包括ns_common结构体,并且不包含proc_inum整数。相反,可以使用ns_common结构访问索引节点编号。

因此,inode编号可以通过以下行获得(从内核v3.19开始):task_active_pid_ns(current)->ns_common->inum

来源:https://elixir.bootlin.com/linux/v3.19/source/include/linux/pid_namespace.h

相关内容

  • 没有找到相关文章

最新更新