GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Übergeordnete PID eines anderen Prozesses programmgesteuert abrufen?

oder von einer Unix-Shell können Sie ps -p <child_pid> -o ppid= versuchen


Ich bin 7 Jahre zu spät zur Party, aber für alle, die über diese Frage stolpern, hier ist eine alternative Lösung für OS X. Andere hier gepostete Antworten sind richtig und sysctl() wird den Job erledigen, aber Sie können auch proc_pidinfo verwenden um viele nützliche Informationen über einen Prozess zu erhalten.

#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;
}

Offensichtlich ist eine zusätzliche Fehlerprüfung erforderlich.


Ich denke, das Einfachste wäre, "/proc" zu öffnen und den Inhalt zu parsen.

Sie finden die ppid als 4. Parameter von /proc/pid/stat

In C hat libproc einen get_proc_stats Funktion zum Analysieren dieser Datei:siehe Wie kann man die Eltern-PID bei gegebener untergeordneter PID erhalten? für ein Beispiel.


Sie können sich sysctl() ansehen Systemaufruf und diesen Link.


Linux
  1. Neuer übergeordneter Prozess, wenn der übergeordnete Prozess stirbt?

  2. Welcher Prozess hat Pid 0?

  3. Tod des übergeordneten Prozesses erkennen

  4. Wie bekomme ich die Prozess-ID, um einen Nohup-Prozess zu beenden?

  5. So erhalten Sie die PID von einem gegabelten untergeordneten Prozess im Shell-Skript

Verbindungsgeschwindigkeit programmgesteuert abrufen?

Wie erhalte ich USB-Anbieter- und Produktinformationen programmgesteuert unter Linux?

Der untergeordnete Prozess empfängt das SIGINT des übergeordneten Prozesses

So beenden Sie den Zombie-Prozess

So erhalten Sie einen untergeordneten Prozess aus einem übergeordneten Prozess

Wie man einen gerade gestarteten Prozess pipi bekommt