Вы захотите узнать о взаимодействии с / proc / "psuedo-filesystem" с помощью типичных вызовов стандартной библиотеки языка C. Документация, необходимая для начала работы, входит в состав любого дистрибутива Linux и представляет собой простой поиск в Google.
(Теперь, когда вы знаете, что искать. Я знаю, что это обычно большая часть проблемы!)
Короче говоря, каталоги и файлы в каталоге / proc / работающей системы Linux отражают состояние работающего ядра, которое (естественно) включает в себя процессы. Однако, прежде чем вы начнете взимать плату, вам нужно помнить некоторую информацию.
Процесс зомби - это не то же самое, что процесс сирот. Потерянный процесс - это процесс, оставшийся работающим в состоянии ожидания после неправильного выхода из родительского процесса. Процесс зомби - это процесс, который правильно завершился, освободил все свои ресурсы, но сохраняет место в таблице процессов.
Обычно это происходит, когда процесс запускается программой. Видите ли, ядро не удалит запись готового подпроцесса в таблице процессов, пока родительская программа не получит правильное состояние возврата подпроцесса. В этом есть смысл; как еще родительская программа узнает, что подпроцесс завершился неправильно?
Таким образом, все подпроцессы технически являются зомби, по крайней мере, в течение очень короткого времени. Для программы не является плохим состоянием.
Действительно, "зомби" иногда создаются намеренно. Например, иногда запись о зомби на некоторое время остается на месте, чтобы другие запущенные процессы не получали тот же PID, что и ранее запущенный (и теперь зомби) процесс.
Другими словами, если вы без необходимости запускаете процессы зомби SIGCHLD, вы можете создать серьезную проблему для нерестовой программы. Однако, если процесс был зомби в течение получаса или более, это, вероятно, признак ошибки.
Редактировать: Вопрос изменился на меня! Нет, нет более простого способа, чем как это делает PS. Если бы он был, он был бы интегрирован в PS давно. Файлы / proc являются основным источником информации о состоянии ядра. :)