SYMLINK(2) Podręcznik programisty Linuksa SYMLINK(2)

symlink, symlinkat - tworzenie nowej nazwy dla pliku

#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 versions <= 2.19: */ _BSD_SOURCE

symlinkat():

Od glibc 2.10:
_POSIX_C_SOURCE >= 200809L
Przed glibc 2.10:
_ATFILE_SOURCE

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.

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.

Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i odpowiednio ustawiane jest errno.

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

The following additional errors can occur for symlinkat():

EBADF
newdirfd is not a valid file descriptor.
ENOENT
linkpath is a relative pathname and newdirfd refers to a directory that has been deleted.
ENOTDIR
linkpath is relative and newdirfd is a file descriptor referring to a file other than a directory.

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

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

symlinkat(): POSIX.1-2008.

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

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.

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

Angielska wersja tej strony pochodzi z wydania 5.10 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/.

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 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

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

15 września 2017 r. Linux