.\" -*- coding: UTF-8 -*- .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. .\" and Copyright (C) 2006, 2014 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified 1993-07-23 by Rik Faith .\" Modified 1994-08-21 by Michael Haardt .\" Modified 2004-06-23 by Michael Kerrisk .\" Modified 2005-04-04, as per suggestion by Michael Hardt for rename.2 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH link 2 "13 czerwca 2024 r." "Linux man\-pages 6.9.1" .SH NAZWA link, linkat \- tworzy kolejną nazwę pliku .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .P \fBint link(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP .P \fB#include \fP/* Definicja stałych \fBAT_*\fP */ \fB#include \fP .P \fBint linkat(int \fP\fIolddirfd\fP\fB, const char *\fP\fIoldpath\fP\fB,\fP \fB int \fP\fInewdirfd\fP\fB, const char *\fP\fInewpath\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .P .RS -4 Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .RE .P \fBlinkat\fP(): .nf Od glibc 2.10: _POSIX_C_SOURCE >= 200809L Przed glibc 2.10: _ATFILE_SOURCE .fi .SH OPIS \fBlink\fP() tworzy nowe dowiązanie (nazywane też dowiązaniem zwykłym albo twardym) do istniejącego pliku. .P Jeśli plik \fInewpath\fP już istnieje, to \fInie\fP będzie nadpisany. .P Ta nowa nazwa może być używana dokładnie tak samo jak stara, w dowolnych operacjach; obie nazwy odnoszą się do tego samego pliku (i w związku z tym mają te same uprawnienia i własność). Nie można też powiedzieć, która nazwa jest \[Bq]oryginalna\[rq]. .SS linkat() Wywołanie systemowe \fBlinkat\fP() operuje w dokładnie taki sam sposób jak \fBlink\fP(), z wyjątkiem różnic opisanych tutaj. .P Jeśli ścieżka podana w \fIoldpath\fP jest względna, jest ona interpretowana względem katalogu, do którego odnosi się deskryptor pliku \fIolddirfd\fP (zamiast względem bieżącego katalogu roboczego procesu wywołującego, jak ma to miejsce w \fBlink\fP() w przypadku ścieżek względnych). .P Jeśli \fIoldpath\fP jest względna, a \fIolddirfd\fP ma wartość specjalną \fBAT_FDCWD\fP, to \fIoldpath\fP jest interpretowana względem bieżącego katalogu roboczego procesu wywołującego (czyli tak jak robi to \fBlink\fP()). .P Jeśli \fIoldpath\fP jest bezwzględna, to \fIolddirfd\fP jest ignorowane. .P Interpretacja \fInewpath\fP jest taka sama jak \fIoldpath\fP, z tym wyjątkiem, że ścieżka względna jest interpretowana względem katalogu, do którego odnosi się deskryptor pliku \fInewdirfd\fP. .P Następujące wartości mogą być zsumowane bitowo (OR) we \fIflags\fP: .TP \fBAT_EMPTY_PATH\fP (od Linuksa 2.6.39) .\" commit 11a7b371b64ef39fc5fb1b6f2218eef7c4d035e3 .\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed Jeśli \fIoldpath\fP jest pustym łańcuchem, tworzy dowiązanie do pliku, do którego odnosi się \fIolddirfd\fP (który mógł być pozyskany za pomocą znacznika \fBO_PATH\fP \fBopen\fP(2)). W takim przypadku \fIolddirfd\fP może odnosić się do dowolnego typu pliku, z wyjątkiem katalogu. Zwykle nie zadziała to, gdy licznik dowiązań wskazuje zero (pliki utworzone z \fBO_TMPFILE\fP i bez \fBO_EXCL\fP są wyjątkiem). Wywołujący musi mieć przywilej \fBCAP_DAC_READ_SEARCH\fP (ang. capability), aby użyć tego znacznika. Niniejszy znacznik jest typowo linuksowy; należy zdefiniować \fB_GNU_SOURCE\fP, aby pozyskać jego definicję. .TP \fBAT_SYMLINK_FOLLOW\fP (od Linuksa 2.6.18) Domyślnie, \fBlinkat\fP(), nie rozwija \fIoldpath\fP, jeśli jest ona dowiązaniem symbolicznym (jak \fBlink\fP()). Można podać znacznik \fBAT_SYMLINK_FOLLOW\fP we \fIflags\fP, aby \fIoldpath\fP została rozwiązana, jeśli jest dowiązaniem symbolicznym. Jeśli zamontowano procfs, może posłużyć to za alternatywę do \fBAT_EMPTY_PATH\fP, podobnie do: .IP .in +4n .EX linkat(AT_FDCWD, "/proc/self/fd/", newdirfd, newname, AT_SYMLINK_FOLLOW); .EE .in .P Przed Linuksem 2.6.18, argument \fIflags\fP nie był używany; wymagane było podanie jego wartości równej 0. .P Więcej informacji o potrzebie wprowadzenia \fBlinkat\fP() można znaleźć w podręczniku \fBopenat\fP(2). .SH "WARTOŚĆ ZWRACANA" Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest \-1 i ustawiane \fIerrno\fP, wskazując błąd. .SH BŁĘDY .TP \fBEACCES\fP Odmówiono zapisu do katalogu zawierającego \fInewpath\fP lub brak uprawnienia przeszukiwania dla jednego z katalogów w składowej ścieżek \fIoldpath\fP lub \fInewpath\fP (zob. też \fBpath_resolution\fP(7)). .TP \fBEDQUOT\fP Przydział bloków dyskowych użytkownika dotyczący systemu plików został wyczerpany. .TP \fBEEXIST\fP \fInewpath\fP już istnieje. .TP \fBEFAULT\fP \fIoldpath\fP lub \fInewpath\fP wskazuje poza dostępną dla użytkownika przestrzeń adresową. .TP \fBEIO\fP Wystąpił błąd wejścia/wyjścia. .TP \fBELOOP\fP Podczas rozwiązywania \fIoldpath\fP lub \fInewpath\fP napotkano zbyt wiele dowiązań symbolicznych. .TP \fBEMLINK\fP Plik do którego odnosi się \fIoldpath\fP, osiągnął już maksymalną liczbę prowadzących do niego dowiązań zwykłych. Przykładowo, w systemie plików \fBext4\fP(5) bez cechy \fIdir_index\fP, limit liczby dowiązań zwykłych wynosi 65\ 000; na \fBbtrfs\fP(5) jest to 65\ 535 dowiązań. .TP \fBENAMETOOLONG\fP \fIoldpath\fP lub \fInewpath\fP było zbyt długie. .TP \fBENOENT\fP Składnik katalogu w \fIoldpath\fP lub \fInewpath\fP nie istnieje, lub jest wiszącym dowiązaniem symbolicznym. .TP \fBENOMEM\fP Brak pamięci jądra. .TP \fBENOSPC\fP Na urządzeniu, zawierającym plik nie ma miejsca na kolejny wpis w katalogu. .TP \fBENOTDIR\fP Składnik \fIoldpath\fP lub \fInewpath\fP używany jako katalog nie jest w rzeczywistości katalogiem. .TP \fBEPERM\fP \fIoldpath\fP jest katalogiem. .TP \fBEPERM\fP System plików zawierający \fIoldpath\fP i \fInewpath\fP nie obsługuje tworzenia twardych dowiązań. .TP \fBEPERM\fP (od Linuksa 3.6) Wywołujący nie ma uprawnienia do utworzenia dowiązania zwykłego do tego pliku (zob. opis \fI/proc/sys/fs/protected_hardlinks\fP w \fBproc\fP(5)). .TP \fBEPERM\fP \fIoldpath\fP została oznaczona jako tylko do odczytu (immutable) lub tylko do nadpisu (append\-only; zob \fBFS_IOC_SETFLAGS\fP(2const)). .TP \fBEROFS\fP Plik leży na systemie plików tylko dla odczytu. .TP \fBEXDEV\fP \fIoldpath\fP i \fInewpath\fP nie są zamontowane w tym samym systemie plików (Linux dopuszcza montowanie systemu plików w wielu punktach, ale \fBlink\fP() nie działa poprzez różne montowania, nawet gdy w obu miejscach zamontowano ten sam system plików). .P Mogą wystąpić następujące dodatkowe błędy dla \fBlinkat\fP(): .TP \fBEBADF\fP \fIoldpath\fP (\fInewpath\fP) są względne, lecz \fIolddirfd\fP (\fInewdirfd\fP) nie wynosi ani \fBAT_FDCWD\fP, ani nie jest prawidłowym deskryptorem pliku. .TP \fBEINVAL\fP We \fIflags\fP podano nieprawidłową wartość znacznika. .TP \fBENOENT\fP We \fIflags\fP podano \fBAT_EMPTY_PATH\fP, lecz wywołujący nie posiada przywileju \fBCAP_DAC_READ_SEARCH\fP (ang. capability). .TP \fBENOENT\fP Próbowano utworzyć dowiązanie do pliku \fI/proc/self/fd/NN\fP, odnoszącego się do deskryptora liku utworzonego za pomocą .IP .in +4n .EX open(path, O_TMPFILE | O_EXCL, mode); .EE .in .IP Zobacz \fBopen\fP(2). .TP \fBENOENT\fP Próbowano utworzyć dowiązanie do pliku \fI/proc/self/fd/NN\fP, odnoszącego się do pliku, który usunięto. .TP \fBENOENT\fP \fIoldpath\fP jest ścieżką względną, a \fIolddirfd\fP odnosi się do usuniętego katalogu albo \fInewpath\fP jest ścieżką względną, a \fInewdirfd\fP odnosi się do usuniętego katalogu. .TP \fBENOTDIR\fP \fIoldpath\fP jest względna, a \fIolddirfd\fP jest deskryptorem pliku odnoszącym się do pliku innego niż katalog; lub analogicznie dla \fInewpath\fP i \fInewdirfd\fP .TP \fBEPERM\fP We \fIflags\fP podano \fBAT_EMPTY_PATH\fP, \fIoldpath\fP jest łańcuchem pustym, a \fIolddirfd\fP odnosi się do katalogu. .SH WERSJE .\" more precisely: since Linux 1.3.56 .\" For example, the default Solaris compilation environment .\" behaves like Linux, and contributors to a March 2005 .\" thread in the Austin mailing list reported that some .\" other (System V) implementations did/do the same -- MTK, Apr 05 POSIX.1\-2001 twierdzi, że \fBlink\fP() powinien rozwiązywać \fIoldpath\fP, jeśli jest ona dowiązaniem symbolicznym. Jednak od Linuksa 2.0, Linux tak nie czyni: jeśli \fIoldpath\fP jest dowiązaniem symbolicznym, to \fInewpath\fP jest tworzona jako dowiązanie zwykłe (twarde) do samego pliku dowiązania symbolicznego (tj. \fInewpath\fP staje się dowiązaniem symbolicznym do tego samego pliku, do którego odnosi się \fIoldpath\fP). Niektóre inne implementacje zachowują się w ten sam sposób co Linux. POSIX.1\-2008 zmieniło specyfikację \fBlink\fP(), czyniąc rozwiązywanie \fIoldpath\fP gdy jest to dowiązanie symboliczne, zależnym od implementacji. Aby uzyskać precyzyjną kontrolę nad traktowaniem dowiązań symbolicznych przy tworzeniu dowiązań zwykłych, należy korzystać z \fBlinkat\fP(). .SS glibc W starszych jądrach, gdy niedostępne jest \fBlinkat\fP() funkcja opakowująca z biblioteki glibc z konieczności korzysta z \fBlink\fP(), chyba że podano \fBAT_SYMLINK_FOLLOW\fP. Gdy \fIoldpath\fP i \fInewpath\fP są ścieżkami względnymi, glibc tworzy ścieżki w zależności od dowiązań symbolicznych w \fI/proc/self/fd\fP, które odnoszą się do argumentów \fIolddirfd\fP i \fInewdirfd\fP. .SH STANDARDY .TP \fBlink\fP() POSIX.1\-2008. .SH HISTORIA .TP \fBlink\fP() .\" SVr4 documents additional ENOLINK and .\" EMULTIHOP error conditions; POSIX.1 does not document ELOOP. .\" X/OPEN does not document EFAULT, ENOMEM or EIO. SVr4, 4.3BSD, POSIX.1\-2001 (lecz zob. WERSJE). .TP \fBlinkat\fP() POSIX.1\-2008. Linux 2.6.16, glibc 2.4. .SH UWAGI Dowiązania zwykłe (twarde), tworzone z pomocą \fBlink\fP(), nie mogą wykraczać poza jeden system plików. W takich sytuacjach można użyć funkcji \fBsymlink\fP(2). .SH USTERKI Na systemach NFS, wartość zwracana może być nieprawidłowa w wypadku gdy serwer NFS dokonuje tworzenia dowiązania i umiera przed zakomunikowaniem tego faktu. Można użyć \fBstat\fP(2) aby dowiedzieć się, czy dowiązanie zostało utworzone. .SH "ZOBACZ TAKŻE" \fBln\fP(1), \fBopen\fP(2), \fBrename\fP(2), \fBstat\fP(2), \fBsymlink\fP(2), \fBunlink\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys , Andrzej Krzysztofowicz i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .