.\" -*- coding: UTF-8 -*-
.\" Copyright (C) 1994, 1995, Daniel Quinlan <quinlan@yggdrasil.com>
.\" Copyright (C) 2002-2008, 2017, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Copyright (C) 2023, Alejandro Colomar <alx@kernel.org>
.\"
.\" SPDX-License-Identifier: GPL-3.0-or-later
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH proc_pid_fd 5 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.SH NAZWA
/proc/pid/fd/ \- deskryptory pliku
.SH OPIS
.TP 
\fI/proc/\fPpid\fI/fd/\fP
Jest to podkatalog zawierający po jednym wpisie dla każdego otwartego przez
proces pliku; nazwą tego wpisu jest deskryptor pliku i jest on dowiązaniem
symbolicznym do rzeczywistego pliku. Dlatego 0 jest standardowym wejściem, 1
jest standardowym wyjściem, 2 jest standardową diagnostyką, itd.
.IP
W przypadku deskryptorów plików potoków i gniazd, wpisy będą dowiązaniami
symbolicznymi, których zawartością jest typ pliku z i\-węzłem. Wywołanie
\fBreadlink\fP(2) na takim pliku zwróci ciąg w postaci:
.IP
.in +4n
.EX
typ:[i\-węzeł]
.EE
.in
.IP
Przykładowo \fIsocket:[2248868]\fP będzie gniazdem z i\-węzłem  2248868. W
przypadku gniazd, i\-węzeł można wykorzystać do pozyskania większej liczby
informacji z jednego z plików z katalogu \fI/proc/net/\fP.
.IP
W przypadku deskryptorów plików, które nie mają odpowiadającego i\-węzła
(np. deskryptorów plików tworzonych za pomocą \fBbpf\fP(2), \fBepoll_create\fP(2),
\fBeventfd\fP(2), \fBinotify_init\fP(2), \fBperf_event_open\fP(2), \fBsignalfd\fP(2),
\fBtimerfd_create\fP(2) i \fBuserfaultfd\fP(2)), wpis będzie dowiązaniem
symbolicznym z zawartością w postaci
.IP
.in +4n
.EX
anon_inode:\fItyp\-pliku\fP
.EE
.in
.IP
W wielu przypadkach (lecz nie wszystkich) \fItyp\-pliku\fP jest otoczony
nawiasami kwadratowymi.
.IP
Przykładowo dowiązanie symboliczne deskryptora pliku epoll będzie
dowiązaniem symbolicznym, którego zawartością jest łańcuch
\fIanon_inode:[eventpoll]\fP.
.IP
.\"The following was still true as at kernel 2.6.13
W procesie wielowątkowym zawartość tego katalogu nie jest dostępna, jeżeli
wątek główny już się zakończył (zazwyczaj przez wywołanie
\fBpthread_exit\fP(3)).
.IP
Programy, które przyjmują nazwę pliku jako argument wiersza polecenia, lecz
nie czytają standardowego wejścia, jeśli nie podano argumentu oraz programy
które zapisują do pliku nazwanego argumentem wiersza polecenia, lecz nie
wysyłają danych wyjściowych na standardowe wyjście, można zmusić do używania
standardowego wejścia lub wyjścia wykorzystując pliki \fI/proc/\fPpid\fI/fd\fP
jako argumenty wiersza poleceń. Na przykład, zakładając, że opcja \fI\-i\fP
określa plik wejściowy, a opcja \fI\-o\fP określa plik wyjściowy:
.IP
.in +4n
.EX
$\fB foobar \-i /proc/self/fd/0 \-o /proc/self/fd/1 ...\fP
.EE
.in
.IP
.\" The following is not true in my tests (MTK):
.\" Note that this will not work for
.\" programs that seek on their files, as the files in the fd directory
.\" are not seekable.
co daje działający filtr.
.IP
\fI/proc/self/fd/N\fP jest w przybliżeniu tym samym co \fI/dev/fd/N\fP na
niektórych systemach uniksowych i uniksopodobnych. Większość linuksowych
skryptów MAKEDEV tworzy dowiązania symboliczne \fI/dev/fd\fP do
\fI/proc/self/fd\fP.
.IP
Większość systemów udostępnia dowiązania symboliczne \fI/dev/stdin\fP,
\fI/dev/stdout\fP i \fIdev/stderr\fP, które linkują odpowiednio do plików \fI0\fP,
\fI1\fP i \fI2\fP w \fI/proc/self/fd\fP. Powyższe, przykładowe polecenie może być
więc zapisane również tak:
.IP
.in +4n
.EX
$\fB foobar \-i /dev/stdin \-o /dev/stdout ...\fP
.EE
.in
.IP
Uprawnienie do rozwiązania lub odczytu (\fBreadlink\fP(2)) dowiązań
symbolicznych w tym katalogu, zależy od sprawdzenia trybu dostępu ptrace:
\fBPTRACE_MODE_READ_FSCREDS\fP; zob. \fBptrace\fP(2).
.IP
Proszę zauważyć, że w przypadku deskryptorów pliku odnoszących się do
i\-węzłów (potoków i gniazd, zob. wyżej), ich i\-węzły mają bity uprawnień i
informacje o własności odmienne od tych, z wpisu \fI/proc/\fPpid\fI/fd\fP, a
własność może się różnić od identyfikatorów użytkownika i grupy
procesu. Proces nieuprzywilejowany może nie mieć odpowiednich uprawnień do
ich otwarcia, jak w tym przykładzie:
.IP
.in +4n
.EX
$\fB echo test | sudo \-u nobody cat\fP
test
$\fB echo test | sudo \-u nobody cat /proc/self/fd/0\fP
cat: /proc/self/fd/0: Brak dostępu
.EE
.in
.IP
Deskryptor pliku 0 odnosi się do potoku utworzonego przez powłokę i będącego
własnością tego użytkownika powłoki, którym nie jest \fInobody\fP, zatem \fBcat\fP
nie ma uprawnień do utworzenia nowego deskryptora pliku do odczytu z tego
i\-węzła, nawet gdy może wciąż czytać z jego istniejącego deskryptora pliku
0.
.SH "ZOBACZ TAKŻE"
\fBproc\fP(5)
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Przemek Borys <pborys@dione.ids.pl>,
Robert Luberda <robert@debian.org>
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 .
