see - linux: ¿obtienes programáticamente el pid de otro proceso?
ubuntu process running (5)
Intenté con Google, pero encontré getppid()
que obtiene el pid principal del proceso actual .
Necesito algo como getppid(some_other_pid)
, ¿existe tal cosa? Básicamente toma el pid de algún proceso y devuelve el pid del proceso padre.
Creo que lo más simple sería abrir "/ proc" y analizar los contenidos.
Encontrará el ppid como el 4to parámetro de / proc / pid / stat
Puede echar un vistazo a la llamada al sistema sysctl()
y objectpark.net/parentpid.html enlace.
Tengo 7 años de retraso en la fiesta pero para cualquier persona que pueda encontrar esta pregunta, aquí hay una solución alternativa en OS X. Otras respuestas publicadas aquí son correctas y sysctl()
hará el trabajo, pero también puede usar proc_pidinfo
para obtener una 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 verificación de errores adicionales.
Una forma más de obtenerlo desde la entrada proc:
cat /proc/<pid>/status | grep PPid:
o desde un shell de Unix puedes probar ps -p <child_pid> -o ppid=