2013-05-08 125 views
-4

在BASH中有一個pstree命令,它'繪製'一個進程樹。我想知道C編程語言中的類似功能是什麼?C-pstree相當於

一個簡單的例子,將不勝感激。

+1

如果你想要這個功能,爲什麼不直接調用pstree? – VoronoiPotato 2013-05-08 14:40:56

+2

它是開源的,我相信你可以找到它,並直接閱讀它是如何做到的。 – 2013-05-08 14:41:31

+0

如何在C中使用它? – user1926550 2013-05-08 14:44:52

回答

2

中有C.沒有這樣的「功能」,但你可以很容易地,或者通過讀取/ proc文件系統(在Linux上)進行編程的東西,都創造什麼,用execl()/system()調用ps

從那裏,你可以得到每個過程的子列表,併爲這個列表的每個過程得到他們的孩子等等。從過程1 init開始。

否則,

int main() { 
    system('pstree'); 
    return 0; 
} 

將工作:-)

如果你想重新實現它,你最好遵循卡爾Norum時的忠告使用源,盧克

+1

...如果您處於應用這些系統調用的平臺上。如果沒有,您將不得不爲您的平臺使用等效的系統調用。 – Vicky 2013-05-08 15:01:02

+0

沒有處理進程內省的系統調用。我確信有一些庫可以處理我們可以在google上找到的,但那不會是posix。做到這一點的唯一標準方法,就是我在答案中給出的方式。 (雖然/ proc不是標準的) – zmo 2013-05-08 15:05:50