加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何在内核模块中使用proc_pid_cmdline

发布时间:2020-12-13 22:56:14 所属栏目:Linux 来源:网络整理
导读:我正在编写一个内核模块来获取带有完整进程名称的pids列表. proc_pid_cmdline()给出完整的进程名称;使用相同的函数/ proc / * / cmdline获取完整的进程名称. (struct task_struct) – comm提示它是什么过程,但不是完整的路径. 我已经包含了函数名称,但它给出
我正在编写一个内核模块来获取带有完整进程名称的pids列表. proc_pid_cmdline()给出完整的进程名称;使用相同的函数/ proc / * / cmdline获取完整的进程名称. (struct task_struct) – > comm提示它是什么过程,但不是完整的路径.

我已经包含了函数名称,但它给出了错误,因为它不知道在哪里找到函数.

如何在模块中使用proc_pid_cmdline()?

解决方法

你不应该调用proc_pid_cmdline().

在fs / proc / base.c中它是一个non-public function:

static int proc_pid_cmdline(struct seq_file *m,struct pid_namespace *ns,struct pid *pid,struct task_struct *task)

但是,它做的很简单:

get_cmdline(task,m->buf,PAGE_SIZE);

但这不太可能返回完整路径,并且无法确定每种情况下的完整路径.可以覆盖arg [0]值,可以删除或移动文件等.进程可以以隐藏原始命令行和各种其他疾病的方式执行().

扫描我的Fedora 20系统/ proc / * / cmdline会出现各种不太有用的结果:

-F
BUG:
WARNING: at
WARNING: CPU:
INFO: possible recursive locking detecte
ernel BUG at
list_del corruption
list_add corruption
do_IRQ: stack overflow:
ear stack overflow (cur:
eneral protection fault
nable to handle kernel
ouble fault:
RTNL: assertion failed
eek! page_mapcount(page) went negative!
adness at
NETDEV WATCHDOG
ysctl table check failed
: nobody cared
IRQ handler type mismatch
Machine Check Exception:
Machine check events logged
divide error:
bounds:
coprocessor segment overrun:
invalid TSS:
segment not present:
invalid opcode:
alignment check:
stack segment:
fpu exception:
simd exception:
iret exception:
/var/log/messages
--
/usr/bin/abrt-dump-oops
-xtD

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读