Na pierwszy rzut oka jest to dość proste, a ja sam mógłbym je łatwo wdrożyć. Wystarczy kolejno wywołać dirname(), aby przejść na wyższy poziom na ścieżce pliku i sprawdzić, czy jest to katalog, który sprawdzamy.Jak mogę sprawdzić, czy plik jest potomkiem danego katalogu?
Ale dowiązania symboliczne rzucają całość w chaos. Każdy katalog znajdujący się na ścieżce sprawdzanego pliku lub katalogu może być dowiązaniem symbolicznym, a każde dowiązanie symboliczne może mieć dowolny łańcuch dowiązań symbolicznych do innych dowiązań symbolicznych. W tym momencie mój mózg topi się i nie jestem pewien, co robić. Próbowałem napisać kod, aby poradzić sobie z tymi szczególnymi przypadkami, ale wkrótce staje się zbyt skomplikowany i zakładam, że robię to źle. Czy istnieje dość elegancki sposób na zrobienie tego?
Używam Pythona, więc każda wzmianka o bibliotece, która to robi, byłaby fajna. W przeciwnym razie jest to dość neutralny problem językowy.
Może przypadki skrajne są w mojej głowie. Mógłbym przysiąc, że dowiązanie symboliczne powoduje, że takie podejście w niektórych przypadkach nie udaje się, ale nie mogę wymyślić przykładów, które by to udowodniły. Czuję, że walczę z duchem ... – mackstann
Ponieważ każdy hierarchiczny system plików, jaki wymyślę, wymaga pojedynczego, unikalnego, kanonicznego, prawdziwego nazwanego katalogu, to faktycznie działa. Chociaż może być sprzeczne z intuicją, że można dostać się z miejsca na miejsce, w katalogach "prawdziwy rodzic" musi być prawdziwy lub zły. – msw
Cóż, to dobra wiadomość, aby to usłyszeć. Teraz wystarczy sprawdzić cztery przypadki (realpath i non-realpath dla obu katalogów i plików). Dzięki! – mackstann