SYMLINK(2)

NAZWA
symlink, symlinkat - tworzenie nowej nazwy dla pliku

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
        || /* Wersje glibc <= 2.19: */ _BSD_SOURCE

symlinkat():
    Since glibc 2.10:
        _POSIX_C_SOURCE >= 200809L
    Before 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 (znane również pod nazwą miękiego dowiązania) może wskazywać na plik istniejący, lub nie istniejący; ten drugi przypadek znany jest pod pojęciem wiszącego dowiązania.

Prawa dostępu dla dowiązania symbolicznego są nieistotne; jego właścicielstwo jest ignorowane podczas podążania za nim, lecz sprawdzane podczas usuwania lub przemianowywania, gdy dowiązanie jest w katalogu z ustawionym bitem `sticky' (S_ISVTX).

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

  symlinkat()
The symlinkat() system call operates in exactly the same way as symlink(), except for the differences described here.

If the pathname given in linkpath is relative, then it is interpreted relative to the directory referred to by the file descriptor newdirfd (rather than relative to the current working directory of the calling process, as is done by symlink() for a relative pathname).

If linkpath is relative and newdirfd is the special value AT_FDCWD, then linkpath is interpreted relative to the current working directory of the calling process (like symlink()).

If linkpath is absolute, then newdirfd is ignored.

See openat(2) for an explanation of the need for symlinkat().

WARTOŚĆ ZWRACANA
On success, zero is returned. On error, -1 is returned, and errno is set to indicate the error.

BŁĘDY

EACCES
    Write access to the directory containing linkpath is denied, or one of the directories in the path prefix of linkpath did not allow search permission. (See also path_resolution(7).)

EBADF
    (symlinkat()) linkpath is relative but newdirfd is neither AT_FDCWD nor a valid file descriptor.

EDQUOT
    The user's quota of resources on the filesystem has been exhausted. The resources could be inodes or disk blocks, depending on the filesystem implementation.

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
    A directory component in linkpath does not exist or is a dangling symbolic link, or target or linkpath is an empty string.

ENOENT
    (symlinkat()) linkpath is a relative pathname and newdirfd refers to a directory that has been deleted.

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 is relative and newdirfd is a file descriptor referring to a file other than a directory.

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.

WERSJE
symlinkat() was added to Linux in kernel 2.6.16; library support was added to glibc in version 2.4.

ZGODNE Z
symlink(): SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.

symlinkat(): POSIX.1-2008.

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 porządane, należy używać link(2).

  Uwagi dla glibc
On older kernels where symlinkat() is unavailable, the glibc wrapper function falls back to the use of symlink(). When linkpath is a relative pathname, glibc constructs a pathname based on the symbolic link in /proc/self/fd that corresponds to the newdirfd argument.

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)

O STRONIE
Angielska wersja tej strony pochodzi z wydania 5.13 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

T◈UMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl> i Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> 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.