Scroll to navigation

SYMLINK(2) Podręcznik programisty Linuksa 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():

_POSIX_C_SOURCE >= 200809L
_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.

WARTOŚĆ ZWRACANA

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

BŁĘDY

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).)
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.
linkpath już istnieje.
target lub linkpath wskazuje poza dostępną dla użytkownika przestrzeń adresową.
Wystąpił błąd wejścia/wyjścia.
Podczas rozwiązywania linkpath napotkano zbyt wiele dowiązań symbolicznych.
target lub linkpath było zbyt długie.
A directory component in linkpath does not exist or is a dangling symbolic link, or target or linkpath is an empty string.
Brak pamięci jądra.
Na urządzeniu, zawierającym plik nie ma miejsca na kolejny wpis w katalogu.
Składnik użyty jako katalog w linkpath w rzeczywistości nie jest katalogiem.
System plików zawierający linkpath nie zezwala na tworzenie dowiązań symbolicznych.
Plik linkpath znajduje się na systemie plików tylko dla odczytu.

The following additional errors can occur for symlinkat():

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

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

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

15 września 2017 r. Linux