GNU/Linux >> Tutoriales Linux >  >> Linux

¿Obtener programáticamente el id principal de otro proceso?

o desde un shell de Unix puedes probar ps -p <child_pid> -o ppid=


Llegué 7 años tarde a la fiesta, pero para cualquiera que pueda tropezar con 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 puedes 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.


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

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

En C, libproc tiene un get_proc_stats función para analizar ese archivo:consulte Dado un PID secundario, ¿cómo puede obtener el PID principal para ver un ejemplo?


Puedes echar un vistazo a sysctl() llamada al sistema y este enlace.


Linux
  1. ¿Por qué el Pgid de los procesos secundarios no es el Pid del padre?

  2. ¿Qué proceso tiene Pid 0?

  3. ¿Cómo obtengo la ruta de un proceso en Unix/Linux?

  4. ¿Cómo obtener el ID de proceso del proceso en segundo plano?

  5. Obtenga la identificación del subproceso en Java

¿Nuevo proceso principal cuando muere el proceso principal?

Cómo matar el proceso zombie

Cómo obtener un proceso secundario del proceso principal

¿Cómo obtener el pid de un proceso e invocar kill -9 en el script de shell?

Cómo hacer que pgrep muestre la información completa del proceso

Cómo obtener pid del proceso recién iniciado