no creo que usted puede hacer esto de una manera Python portátil. Pero hay dos posibilidades.
- La información está disponible en el comando
ps
para que pueda analizar eso.
- Si tiene un sistema con los sistemas de archivos
proc
, puede abrir el archivo /proc/<pid>/status
y buscar la línea que contiene PPid:
, luego haga lo mismo con ese PID.
Por ejemplo, la siguiente secuencia de comandos le conseguirá sus PID, PPID y PPPID, permisos dispuestos:
#!/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
Obviamente, usted tendría que abrir esos archivos con Python.
os.getpppid()? – paxdiablo
sí y mejor sería os.pnid (pid, N) o simplemente os.getppid (pid) –