Я не думаю, что вы можете сделать это портативным способом Python. Но есть две возможности.
- Информация доступна из команды
ps
, чтобы вы могли проанализировать ее.
- Если у вас есть система с файловыми системами
proc
, вы можете открыть файл /proc/<pid>/status
и найти строку, содержащую PPid:
, затем сделать то же самое для этого PID.
Например, следующий скрипт даст вам ваши PID, PPID и PPPID, с разрешениями:
#!/bin/bash
pid=$$
ppid=$(grep PPid: /proc/${pid}/status | awk '{print $2'})
pppid=$(grep PPid: /proc/${ppid}/status | awk '{print $2'})
echo ${pid} ${ppid} ${pppid}
ps -f -p "${pid},${ppid},${pppid}"
производит:
3269 3160 3142
UID PID PPID C STIME TTY TIME CMD
pax 3142 2786 0 18:24 pts/1 00:00:00 bash
root 3160 3142 0 18:24 pts/1 00:00:00 bash
root 3269 3160 0 18:34 pts/1 00:00:00 /bin/bash ./getem.sh
Очевидно, вам придется открывать эти файлы с помощью Python.