首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何获取套接字的拥有者进程?

如何获取套接字的拥有者进程?
EN

Stack Overflow用户
提问于 2014-07-24 11:35:07
回答 1查看 971关注 0票数 2

给定一个套接字结构,有没有办法在内核模块中获得这个套接字的拥有者进程?也就是说,给定一个套接字结构,我正在尝试获取其所有者进程的进程描述符(task_struct结构)?

我最初的想法是遍历任务列表。对于遍历的每个进程p,只需检查p的打开文件描述符是否包含与套接字结构相关联的文件描述符相同的描述符。(在struct socket中,有一个字段struct file *file)。

我不确定内核是否允许我遍历任务列表。有谁知道怎么做吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-07-24 19:52:33

我认为这不是一个坏主意。看看我某天写的这段代码:

代码语言:javascript
代码运行次数:0
运行
复制
struct task_struct *task;
struct list_head *t, *t1;
...
list_for_each(t, t1) {
#ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS
    if ((task_uid(task)).val == 0) /* no root processes, only userspace*/
#else
    if ((task_uid(task)) == 0)
#endif
    continue;
    task = list_entry(t, struct task_struct, tasks);
    /*Now you have task_struct of userspace program*/
    /*and may do whatever you want ))) */
    /*E.g. to figure out opened file descriptors*/
}

一点补充:我想你知道这段代码应该在单个内核线程中运行。不需要执行内核模块初始化函数。

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

https://stackoverflow.com/questions/24924699

复制
相关文章

相似问题

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