.\" -*- 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 <faith@cs.unc.edu>
.\" Modified 1994-08-21 by Michael Haardt
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" 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 <unistd.h>\fP
.P
\fBint link(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP
.P
\fB#include <fcntl.h>           \fP/* Definicja stałych \fBAT_*\fP */
\fB#include <unistd.h>\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/<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 <pborys@dione.ids.pl>,
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>
i
Michał Kułach <michal.kulach@gmail.com>
.
.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 .
