Czy / proc / PID nadal istnieje, gdy PID nie działa?


11

czy jest możliwe, że taki folder /proc/4587istnieje, chociaż nie ma procesu, który ma PID 4587?


1
Zastanawiasz się, czy sprawdzanie / proc / N jest bezpiecznym / niezawodnym sposobem sprawdzenia, czy PID N działa?
Andy Lester,

Zastanawiałem się, czy teoretycznie może istnieć pozostałość w / proc po zakończeniu procesu.
David Dai

Odpowiedzi:


25

Jeśli /procjest tylko procwierzchowiec (i nikt nie gra sztuczkami z nakładkami), nie, folder oparty na pid istnieje tylko tak długo, jak odpowiedni proces istnieje w pewnym stanie (w tym jako zombie). W rzeczywistości, tuż przed zwróceniem pozycji katalogu dla identyfikatora procesu, jądro ponownie sprawdza istnienie procesu - więc w momencie zwrócenia pozycji katalogu odpowiedni proces nadal tam jest. Dostęp do katalogu rozpoczyna się również od wyszukania odpowiedniego procesu. (Jeśli numery linii się zmienią, poszukaj proc_pident_instantiatei proc_pident_lookup.)

Możesz napotkać problemy spowodowane wyświetleniem listy /proci użyciem wyników później (nawet kilka mikrosekund później): proces może być uruchomiony podczas tworzenia listy /proci zatrzymać się, zanim zaczniesz działać na podstawie wyników.


3
Co z procesami, które zakończyły wykonywanie, ale wait()nie zostały do ​​nich wywołane?
el.pescado,

2
Dobry punkt @ el.pescado, szybkie sprawdzenie wskazuje, że procesy zombie nadal mają swój katalog. Zaktualizuję swoją odpowiedź, dzięki!
Stephen Kitt

Zasadniczo, jeśli pspokazuje proces, jego /prockatalog powinien istnieć.
Barmar

@Barmar „musi” w rzeczywistości: psuzyskuje dostęp /procdo informacji, które wyświetla.
Stephen Kitt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.