oracular (2) symlinkat.2.gz

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⟩.