Я немного смущен, когда происходит несколько su. Допустим, произошла такая ситуация:
Fikrie su to root :
ps -ef | grep su:
root 15524 15388 0 10:15 pts/0 00:00:00 su root
Я знаю, что pid для этого su — 15524, а pid родителя — 15388. Но когда происходит несколько su. например: эта ситуация.
Fikrie su root:
root su fikrie2:
fikrie 2 su root:
ps -ef | grep su:
root 15450 15388 0 10:15 pts/0 00:00:00 su root
fikrie2 15468 15458 0 10:15 pts/0 00:00:00 su fikrie2
root 15478 15476 0 10:15 pts/0 00:00:00 su root
Я думал, что когда root su входит в fikrie2, первый pid будет ppid для второго su. Как-то, когда я попытался найти процесс, это меня смущает. PPID стал 15458
вместо 15450
или 15388
. Ни один из ppid не связан/не связан с ppid или pid перед ним. Я попытался найти в Google и прочитать о process relationship
в Advanced Programming in the UNIX Environment
книге. Может ли кто-нибудь дать мне хорошее объяснение по этому поводу или, может быть, ссылку, которая поможет мне лучше понять отношения процесса.
Я пытаюсь написать код, чтобы найти пользователя, который входит в этого пользователя. Из всех ответов я смотрю на SO, они только помогают найти исходного пользователя, например. Фикри. Если произойдет вторая ситуация, я не смогу получить fikrie2, когда я использую su для получения root-прав от fikrie2. Вместо этого я получаю fikrie, который является первоначальным пользователем. Моя первоначальная идея заключалась в том, чтобы использовать родительский идентификатор для получения пользователя, но при этом из командной строки. Это действительно смущает меня.
PS * Я пробую это на платформе Unix. Я ничего не знаю о Windows, но если ppid и pid различаются между Windows и Unix, пожалуйста, укажите мне направление в Unix.