Мне поручено реализовать простую версию pstree
(команда linux), хотя я запутался в содержании между тем, что показывает pstree
, и тем, что я нахожу в каталоге /proc/[pid]
. После того, как я напечатал pstree
, он показывает, что root всего дерева процессов равно systemd
, вот так:
systemd─┬─ECAgent───3*[{ECAgent}]
├─EasyMonitor
├─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
Хотя после попытки прочитать все файлы /proc/[pid]/stat
я получил следующий результат (сделайте небольшое форматирование):
pid comm state ppid
1 systemd S 0
2 kthreadd S 0
3 rcu_gp I 2
4 rcu_par_gp I 2
Кажется, что есть другой процесс kthreadd
, который параллелен с systemd
. Это отличается от того, что показано в команде pstree
.
После прочтения некоторых руководств и веб-материалов я знаю, что pstree
отображает все процессы запуска и kthreadd
является потоком root всех связанных потоков. , Но я все еще не уверен, что команда pstree
не считает kthreadd
запущенным процессом. То есть kthreadd
- это не процесс, даже если ему принадлежит один pid (а это 2)? Должен ли я включить kthreadd
в качестве запущенного процесса в мою версию pstree
?