linux – 如何在内核模块中使用proc_pid_cmdline
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如何在内核模块中使用proc_pid_cmdline,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1466字,纯文字阅读大概需要3分钟。
内容图文
![linux – 如何在内核模块中使用proc_pid_cmdline](/upload/InfoBanner/zyjiaocheng/966/8b9a8d6646e940a08a8a6e98ca858a15.jpg)
我正在编写一个内核模块来获取带有完整进程名称的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
内容总结
以上是互联网集市为您收集整理的linux – 如何在内核模块中使用proc_pid_cmdline全部内容,希望文章能够帮你解决linux – 如何在内核模块中使用proc_pid_cmdline所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。