Symboliczny link jest mały plik, który zawiera lokalizację (czyli ścieżka i nazwa pliku) pliku docelowego, z flagą w pozycji katalogu, wskazując, że jest to dowiązanie.
Po otwarciu dowiązania symbolicznego system operacyjny podąża za lokalizacją, aby znaleźć plik docelowy. Jeśli cel sam w sobie jest dowiązaniem symbolicznym, podąża również za swoją lokalizacją (1) (2), dopóki lokalizacja nie wskaże pliku, który nie jest dowiązaniem symbolicznym (nazwijmy go FinalFile ). Następnie OS uzyskuje iwęzeł z FinalFile (iwęzeł zawiera metadane, takie jak modyfikacja czasie i ma również wskaźnik do danych pliku,). W końcu otwiera się i- węzeł pliku końcowego . Od tej chwili proces używa tego i-węzła do odczytu / zapisu do pliku. W wyniku zmiany nazwy lub ścieżki dowiązania symbolicznego, usunięcia dowiązania symbolicznego, zmiany ścieżki lub nazwy pliku końcowego, a nawet usunięcia pliku końcowego(3) nie ma wpływu na proces; wciąż odczytuje z tego samego i-węzła.
W większości przypadków operacje na plikach danych na dowiązaniu symbolicznym będą miały wpływ na plik końcowy (np. Odczyt i zapis do pliku dowiązania symbolicznego zostanie odczytany z pliku / plik do pliku końcowego ), ale są wyjątki: readlink()
wywołanie systemowe odczytuje zawartość samego dowiązania symbolicznego.
Z drugiej strony operacje na metadanych pliku (takie jak zmiana nazwy lub usuwanie) zwykle wpływają na dowiązanie symboliczne. Ale są też wyjątki: lstat()
wywołanie systemowe jest podobne stat()
, z tym wyjątkiem, że zwraca informacje o samym dowiązaniu symbolicznym, a nie o pliku końcowym (2).
(1) Istnieje ograniczenie liczby poziomów i sprawy stają się nieco bardziej złożone, jeśli lokalizacja w dowiązaniu symbolicznym jest ścieżką względną.
(2) Czytaj dowiązanie symboliczne (7): obsługa dowiązania symbolicznego, aby uzyskać więcej szczegółów.man 7 symlink
(3) rm
Polecenie lub unlink()
wywołanie systemowe nie usuwa fizycznie pliku. Usuwa pozycję katalogu wskazującą i-węzeł pliku. Sam plik jest usuwany tylko wtedy, gdy oba: a) nie ma już pozycji katalogu (dowiązań twardych), które odnoszą się do jego i-węzła ib) żaden proces nie otworzył pliku.