我正在使用Linux,有点困惑,不知道是否可以访问进程的PCB?如果是,那么我们可以访问它的哪些内容并将它们打印到终端上,如果不能,那为什么?
感谢回答......
我正在使用Linux,有点困惑,不知道是否可以访问进程的PCB?如果是,那么我们可以访问它的哪些内容并将它们打印到终端上,如果不能,那为什么?
感谢回答......
/proc
下提供一些PCB信息——详见proc(5)
手册。这些信息通常以纯文本形式提供,并且可以轻松地显示出来——例如尝试:cat /proc/self/status
是的,因为使用内核调试工具可以访问进程的struct task_struct
(以及其他相关结构)。这不是一项容易的任务;您需要对内核源代码有很好的理解。基本思路是尝试在/proc/kcore
或/proc/kmem
中定位该结构。您需要管理员(root)权限和对内核内存布局的非常好的理解。这应该只用于内核调试或探索 - 请不要在生产代码中这样做,特别是因为内部内核结构的布局在内核版本之间会在没有警告的情况下发生变化!
$ cd /proc/1
$ ls
...a bunch of files...
您可以通过“man proc”或“man 5 proc”了解这些文件的大部分含义。关于这些文件的大量信息也存在于Linux源代码树中的“${LINUX_SRC}/Documentation/filesystems/proc.txt”中。这些文件可以像任何其他文件一样打开和阅读。例如:
$ cat status
Name: init
State: S (sleeping)
Tgid: 1
Pid: 1
PPid: 0
...
$
祝你好运。