Provided by: manpages-pl-dev_4.23.1-1_all bug

NAZWA

       symlink, symlinkat - tworzy nową nazwę dla pliku

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <unistd.h>

       int symlink(const char *target, const char *linkpath);

       #include <fcntl.h>           /* Definicja stałych AT_* */
       #include <unistd.h>

       int symlinkat(const char *target, int newdirfd, const char *linkpath);

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       symlink():
           _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
               || /* glibc <= 2.19: */ _BSD_SOURCE

       symlinkat():
           Od glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Przed glibc 2.10:
               _ATFILE_SOURCE

OPIS

       symlink()  tworzy  dowiązanie  symboliczne o nazwie linkpath które zawiera łańcuch znakowy
       target.

       Dowiązania  symboliczne  są  interpretowane  w  czasie  działania,  tak  jakby   zawartość
       dowiązania była podstawiana do ścieżki, przeglądanej by znaleźć plik lub katalog.

       Dowiązania  symboliczne  mogą  zawierać  składniki  ..,  które  (jeśli używane na początku
       dowiązania) odnoszą się do katalogów nadrzędnych katalogu, w którym  dane  dowiązanie  się
       znajduje.

       Dowiązanie  symboliczne  (czasem  nazywane  również miękkim dowiązaniem) może wskazywać na
       plik istniejący, lub nieistniejący; ten drugi przypadek znany jest pod pojęciem  wiszącego
       dowiązania.

       Prawa  dostępu  dla  dowiązania symbolicznego są nieistotne; jego własność jest ignorowana
       podczas podążania za nim (z wyjątkiem sytuacji, gdy włączono  funkcję  protected_symlinks,
       zgodnie  z wyjaśnieniem w proc(5)), lecz sprawdzane podczas usuwania lub przemianowywania,
       gdy dowiązanie jest w katalogu z ustawionym bitem lepkości (S_ISVTX).

       Jeśli ścieżka linkpath istnieje to nie będzie nadpisana.

   symlinkat()
       Wywołanie systemowe symlinkat() operuje w dokładnie  taki  sam  sposób  jak  symlink(),  z
       wyjątkiem różnic opisanych tutaj.

       Jeśli  ścieżka  podana  w  linkpath jest względna, jest to interpretowane w odniesieniu do
       katalogu do którego odnosi  się  deskryptor  pliku  newdirfd  (zamiast  w  odniesieniu  do
       bieżącego  katalogu  roboczego  procesu wywołującego, jak w stosunku do ścieżek względnych
       robi to symlink()).

       Jeśli linkpath jest względna a newdirfd ma wartość specjalną AT_FDCWD,  to  linkpath  jest
       interpretowana  w  odniesieniu  do  bieżącego katalogu roboczego procesu wywołującego (jak
       symlink()).

       Jeśli ścieżka linkpath jest bezwzględna, to newdirfd jest ignorowane.

       Więcej informacji  o  potrzebie  wprowadzenia  symlinkat()  można  znaleźć  w  podręczniku
       openat(2).

WARTOŚĆ ZWRACANA

       Po  pomyślnym  zakończeniu  zwracane  jest  zero.  Po błędzie zwracane jest -1 i ustawiane
       errno, wskazując błąd.

BŁĘDY

       EACCES Odmówiono zapisu do  katalogu  zawierającego  linkpath  lub  jeden  z  katalogów  w
              składowej  ścieżek  linkpath  nie  zezwala  na uprawnienie przeszukiwania (zob. też
              path_resolution(7)).

       EBADF  (symlinkat())  linkpath jest względne, lecz newdirfd nie wynosi ani  AT_FDCWD,  ani
              nie jest prawidłowym deskryptorem pliku.

       EDQUOT Wyczerpano  przydział  zasobów  użytkownika  w  systemie  plików. Zasobami mogą być
              i-węzły lub bloki dyskowe, w zależności od implementacji systemu plików.

       EEXIST linkpath już istnieje.

       EFAULT target lub linkpath wskazuje poza dostępną dla użytkownika przestrzeń adresową.

       EIO    Wystąpił błąd wejścia/wyjścia.

       ELOOP  Podczas rozwiązywania linkpath napotkano zbyt wiele dowiązań symbolicznych.

       ENAMETOOLONG
              target lub linkpath było zbyt długie.

       ENOENT Składnik linkpath, który powinien być katalogiem, nie istnieje  lub  jest  wiszącym
              dowiązaniem symbolicznym albo target lub linkpath jest łańcuchem pustym.

       ENOENT (symlinkat())   linkpath jest ścieżką względną, a newdirfd odnosi się do usuniętego
              katalogu.

       ENOMEM Brak pamięci jądra.

       ENOSPC Na urządzeniu, zawierającym plik nie ma miejsca na kolejny wpis w katalogu.

       ENOTDIR
              Składnik użyty jako katalog w linkpath w rzeczywistości nie jest katalogiem.

       ENOTDIR
              (symlinkat())   linkpath  jest  względna,  a  newdirfd  jest   deskryptorem   pliku
              odnoszącym się do pliku, zamiast do katalogu.

       EPERM  System plików zawierający linkpath nie zezwala na tworzenie dowiązań symbolicznych.

       EROFS  Plik linkpath znajduje się na systemie plików tylko dla odczytu.

STANDARDY

       POSIX.1-2008.

HISTORIA

       symlink()
              SVr4, 4.3BSD, POSIX.1-2001.

       symlinkat()
              POSIX.1-2008.  Linux 2.6.16, glibc 2.4.

   Uwagi dla glibc
       Na   starszych  wersjach  jądra  Linux,  gdzie  symlinkat()  nie  było  dostępne,  funkcja
       opakowująca z glibc wraca do używania symlink(). Kiedy  linkpath  jest  względną  ścieżką,
       glibc  konstruuje  ścieżkę  na  bazie  dowiązania  symbolicznego  w  /proc/self/fd,  które
       odpowiada argumentowi newdirfd.

UWAGI

       Nie jest dokonywane sprawdzenie target.

       Usunięcie nazwy, na którą wskazuje  dowiązanie  symboliczne,  w  rzeczywistości  spowoduje
       skasowanie  pliku  (chyba  że  ma jeszcze inne twarde dowiązania). Jeśli zachowanie to nie
       jest pożądane, należy używać link(2).

ZOBACZ TAKŻE

       ln(1), namei(1), lchown(2), link(2), lstat(2), open(2), readlink(2), rename(2), unlink(2),
       path_resolution(7), symlink(7)

TŁUMACZENIE

       Autorami   polskiego   tłumaczenia   niniejszej   strony  podręcznika  są:  Przemek  Borys
       <pborys@dione.ids.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i  Michał  Kułach
       <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją. Bliższe informacje o warunkach licencji
       można   uzyskać   zapoznając   się   z   GNU   General   Public   License   w   wersji   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   lub   nowszej.   Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej
       ⟨manpages-pl-list@lists.sourceforge.net⟩.