2013-05-08 2 views
-4

В BASH есть команда pstree, которая «рисует» дерево процессов. Мне интересно, что такое функция на языке программирования C?C - эквивалент pstree

Простой пример будет оценен.

+1

Если вы хотите эту функциональность, почему бы не просто позвонить pstree? – VoronoiPotato

+2

Это открытый исходный код, я уверен, что вы можете его найти и прочитать, как он это делает. –

+0

Как использовать его в C? – user1926550

ответ

2

Там нет такой «функции» в С. Но вы можете легко программировать что-то, что создает что-то так, используя execl()/system() вызовов к ps или путем чтения файловой системы/ргоса (на Linux).

Оттуда вы можете получить список детей каждого процесса, и для каждого процесса этого списка получите своих детей и т. Д., Начиная с процесса 1 init.

иначе,

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

будет работать :-)

Если вы хотите переопределить его, вы бы лучше последовать совету Карла NORUM к использовать источник, Люк!

+1

... если вы находитесь на платформе, на которой применяются эти системные вызовы. Если нет, вам придется использовать эквивалентные системные вызовы для вашей платформы. – Vicky

+0

нет системных вызовов, которые обрабатывают интроспекцию процесса. Я уверен, что есть некоторые библиотеки, которые обрабатывают это, мы можем найти в google, но это не будет posix. Единственный стандартный способ сделать это - это то, как я дал в своем ответе. (хотя/proc не является стандартным) – zmo