2009-10-06 12 views
17

Probé con google, pero encontré getppid() que obtiene el PID padre del proceso actual.linux: programmatically get parent pid de otro proceso?

Necesito algo así como getppid(some_other_pid), ¿existe tal cosa? Básicamente toma el pid de algún proceso y devuelve el proceso padre 'pid.

+1

Eche un vistazo a la llamada al sistema sysctl() y este enlace. http://www.objectpark.net/parentpid.html – vpram86

+1

@Aviator, ¿por qué comentar y no una respuesta? – hasen

Respuesta

22

Creo que lo más simple sería abrir "/ proc" y analizar el contenido.

Encontrarás las ppid como el cuarto parámetro de/proc/pid/stat

+0

bien, ¿qué parte de '/ proc/ /' contiene el padre pid? – hasen

+5

El parámetro 4 es/proc/pid/stat –

+0

¡Ajá, increíble! ¿Puedes editar la respuesta para agregar eso? – hasen

2

Puede echar un vistazo a sysctl() llamada al sistema y this enlace.

+0

Probándolo "ciegamente plegado", no estoy seguro de por qué no está compilando del todo. ¿es solo para OS X? Se supone que funciona en Linux? – hasen

+0

Funcionará solo para BSD y OS X .. – vpram86

+0

debe crear un hipervínculo más amigable. https://www.w3.org/QA/Tips/noClickHere – Jeff

10

o desde un shell de Unix puede intentar ps -p <child_pid> -o ppid=

+0

Awesome simple answer. Para un comando que puede copiar/pegar para verlo en acción, intente ** 'ps -p $$ -o ppid =' **. $$ es la identificación del proceso actual. – Jess

0

una forma más de obtener de entrada proc:

cat /proc/<pid>/status | grep PPid: 
3

Tengo 7 años tarde a la fiesta, pero para cualquier persona que pueda tropezar con este pregunta, aquí hay una solución alternativa para OS X. Otras respuestas publicadas aquí son correctas y sysctl() hará el trabajo, pero también puede usar proc_pidinfo para obtener mucha información útil sobre un proceso.

#include <libproc.h> 

int getppid(const pid_t pid) 
{ 
    proc_bsdinfo info; 
    proc_pidinfo(pid, PROC_PIDTBSDINFO, 0, &info, sizeof(info)); 
    return info.pbi_ppid; 
} 

Obviamente, se requiere una verificación de errores adicional.

Cuestiones relacionadas