Non penso che si può fare questo in modo Python portatile. Ma ci sono due possibilità.
- Le informazioni sono disponibili dal comando
ps
in modo da poterlo analizzare.
- Se si dispone di un sistema con i file system
proc
, è possibile aprire il file /proc/<pid>/status
e cercare la riga contenente PPid:
, quindi eseguire la stessa operazione per quel PID.
Per esempio il seguente script ti porterà le vostre PID, PPID e PPPID, le autorizzazioni disposte:
#!/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}"
produce:
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
Ovviamente, che avrebbe dovuto aprire i file con Python.
os.getpppid()? – paxdiablo
sì e meglio sarebbe os.pnid (pid, N) o semplicemente os.getppid (pid) –