количество дочерних процессов - PullRequest
0 голосов
/ 31 июля 2011

Есть ли в UNIX надежный способ узнать, сколько дочерних процессов имеет мой определенный дочерний процесс?Например, основной процесс разветвляет дочерний процесс, который исполняет программу login, могу ли я узнать, разветвлен ли login или нет?

UPD Я использую C

Ответы [ 3 ]

1 голос
/ 31 июля 2011

Дети связаны через свой ppid ( parent pid ) с родителем, поэтому нужно просто следовать этим ссылкам, в зависимости от того, какой язык вы используете для его реализации. Команда pstree использует это для отображения дерева процессов.

Что касается "надежного", вы должны обрабатывать процессы, возникающие и исчезающие постоянно, лучше всего сделать снимок запущенных процессов как можно быстрее, и только затем анализировать данные.

0 голосов
/ 31 июля 2011

Это грубо, но вы можете просто использовать popen версию , что делает эта страница , и проанализировать возвращаемые значения.

Вместо grep -ing для httpsd вы grep за ваш процесс.Или вы можете использовать переключатель --ppid для команды ps и просто получить все дочерние процессы этого родительского процесса.

0 голосов
/ 31 июля 2011

Вы должны пройти через все процессы, проверить их PPID (идентификатор родительского процесса) и сравнить его с PID процесса, дочерние элементы которого вы хотите.

...