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.
Odpowiedzi:
Jeśli
/proc
jest tylkoproc
wierzchowiec (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ą, poszukajproc_pident_instantiate
iproc_pident_lookup
.)Możesz napotkać problemy spowodowane wyświetleniem listy
/proc
i użyciem wyników później (nawet kilka mikrosekund później): proces może być uruchomiony podczas tworzenia listy/proc
i zatrzymać się, zanim zaczniesz działać na podstawie wyników.źródło
wait()
nie zostały do nich wywołane?ps
pokazuje proces, jego/proc
katalog powinien istnieć.ps
uzyskuje dostęp/proc
do informacji, które wyświetla.