首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C语言访问进程的PCB

用C语言访问进程的PCB
EN

Stack Overflow用户
提问于 2011-02-17 12:47:37
回答 2查看 6.4K关注 0票数 1

我在Linux上工作,我有点困惑,我是否可以访问进程的PCB?如果是,那么我们可以访问它的哪些内容并将它们打印到终端上?如果不是,为什么不呢?

感谢您的回复……

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-17 12:52:53

如果你所说的PCB,你是指过程控制块,是和否...

No,因为它在内核地址空间中,用户进程无法直接访问。内核在/proc下提供了一些来自PCB的信息-有关详细信息,请参阅proc(5)的手册页。此信息通常以纯文本形式提供,并且可以很容易地显示-例如:

代码语言:javascript
复制
cat /proc/self/status

,因为使用内核调试工具可以访问进程的struct task_struct (和其他相关结构)。这不是一项容易的任务;您需要很好地理解内核源代码。基本思想是尝试在/proc/kcore/proc/kmem中定位结构。您需要具有管理(根)权限,并且对内核内存布局有非常好的了解。这应该仅用于内核调试或探索-请不要在生产代码中这样做,特别是在内部内核结构的布局在内核版本之间没有警告的情况下更改!

票数 10
EN

Stack Overflow用户

发布于 2011-02-17 13:01:35

大多数信息都可以通过proc文件系统访问,该文件系统通常安装在/proc上。例如,如果我想在我的系统上查看进程1的信息:

代码语言:javascript
复制
$ cd /proc/1
$ ls
...a bunch of files...

你可以通过"man proc“或"man 5 proc”找到其中大多数的意思。关于这些文件的大量信息也存在于"${LINUX_SRC}/Documentation/filesystems/proc.txt".的Linux源码树中。这些文件可以像任何其他文件一样打开和读取。例如:

代码语言:javascript
复制
$ cat status
Name:   init
State:  S (sleeping)
Tgid:   1
Pid:    1
PPid:   0
...
$

祝好运。

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

https://stackoverflow.com/questions/5025155

复制
相关文章

相似问题

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