Как получить имя родительского потока из текущего в ядре Linux - PullRequest
1 голос
/ 07 октября 2019

Мне нужно получить имя родительского потока из «текущего» * ​​1001 * в ядре. Поле comm в task_struct - это имя, данное потоку.

Я вижу, что task_struct имеет parent, real_parent и group_leader. Доступ к полю comm в task_struct для любого из них НЕ дает имя родительского потока (текущего потока, клонированного / vfork). Вместо этого я получаю systemd для родителя.

Я думаю, это потому, что оно идет с пространством имен init . Как правильно получить имя родителя из «текущего» потока?

1 Ответ

0 голосов
/ 08 октября 2019

Когда создается поток (т. Е. Используется флаг CLONE_THREAD), что с точки зрения ядра означает задачу в той же группе потоков , родитель не является созданным потоком. это, но тот же родительский элемент, что и любой другой поток в группе потоков. С точки зрения пользовательского пространства, все потоки внутри процесса имеют одного и того же родителя, который является родителем процесса.

.group_leader - это поток внутри процесса, который является текущим лидером группы потоков, что, вероятно,ближе всего к тому, что вы хотите (если comm для .group_leader равно systemd, то это будет означать, что вы смотрите на поток внутри самой systemd).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...