2011-02-17 46 views
0

中的進程PCB,我在Linux上工作,我有點混淆,我是否可以訪問過程的PCB?如果是,那麼我們可以訪問它的哪些內容並將它們打印到終端上,如果沒有,那麼爲什麼不呢?要訪問C

謝謝回答.....

回答

9

如果PCB,你的意思是,進程控制塊,yes和no ...

沒有,因爲它在內核地址空間,並不能由用戶進程直接訪問。內核根據/proc提供PCB上的一些信息 - 有關詳細信息,請參閱proc(5)的聯機幫助頁。此信息以純文本形式獲得,並且可以很容易地顯示 - 嘗試,例如:

cat /proc/self/status 

,因爲使用內核調試設施struct task_struct(和其他相關的結構)的過程中可以訪問。這不是一件容易的事情;你需要很好的理解內核源代碼。基本思想是試圖找到/proc/kcore/proc/kmem中的結構。您將需要管理(根)權限和對內核內存佈局的非常好的理解。這應該僅用於內核調試或探索 - 請不要在生產代碼中執行此操作,特別是當內核版本的佈局在內核版本之間不發生警告時更改!

0

大部分信息可以通過proc文件系統訪問,通常安裝在/ proc。例如,如果我想看到我的系統上的進程1的信息:

$ cd /proc/1 
$ ls 
...a bunch of files... 

你可以找出其中大部分通過「人PROC」或「man 5 PROC」的意思。有關這些文件的大量信息也存在於「$ {LINUX_SRC} /Documentation/filesystems/proc.txt」的Linux源代碼樹中。這些文件可以像其他文件一樣打開和讀取。例如:

$ cat status 
Name: init 
State: S (sleeping) 
Tgid: 1 
Pid: 1 
PPid: 0 
... 
$ 

祝你好運。