Ist es möglich, dass ein Ordner wie /proc/4587
existiert, obwohl es keinen Prozess mit PID 4587 gibt?
Ist es möglich, dass ein Ordner wie /proc/4587
existiert, obwohl es keinen Prozess mit PID 4587 gibt?
Antworten:
Wenn /proc
nur der proc
Mount (und niemand spielt Streiche mit Overlays), nein, ein pid-basierter Ordner existiert nur, solange der entsprechende Prozess in einem bestimmten Zustand existiert (auch als Zombie). Kurz bevor ein Verzeichniseintrag für eine Prozess-ID zurückgegeben wird, überprüft der Kernel die Existenz des Prozesses erneut. In dem Moment, in dem ein Verzeichniseintrag zurückgegeben wird, ist der entsprechende Prozess noch vorhanden. Der Zugriff auf ein Verzeichnis beginnt auch mit dem Nachschlagen des entsprechenden Prozesses. (Wenn sich die Zeilennummern ändern, suchen Sie nach proc_pident_instantiate
und proc_pident_lookup
.)
Sie können auf Probleme stoßen, die durch das Auflisten /proc
und Verwenden der Ergebnisse später (sogar einige Mikrosekunden später) verursacht werden: Ein Prozess kann ausgeführt werden, wenn Sie auflisten /proc
, und anhalten, bevor Sie auf die Ergebnisse reagieren.
wait()
nicht aufgerufen wurden?
ps
der Prozess angezeigt wird, sollte sein /proc
Verzeichnis grundsätzlich vorhanden sein.
ps
Zugriffe /proc
, um die angezeigten Informationen zu finden.