| symlink(2) | System Calls Manual | symlink(2) |
symlink, symlinkat - tworzy nową nazwę dla pliku
Standardowa biblioteka C (libc, -lc)
#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);
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
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.
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).
Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i ustawiane errno, wskazując błąd.
POSIX.1-2008.
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.
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).
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 niniejszej strony podręcznika: 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 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.
| 2 maja 2024 r. | Linux man-pages 6.9.1 |