Provided by: manpages-pl_4.27.0-1_all 

NAZWA
/proc/pid/fd/ - deskryptory pliku
OPIS
/proc/pid/fd/
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.
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 readlink(2) na takim pliku zwróci ciąg w postaci:
typ:[i-węzeł]
Przykładowo socket:[2248868] 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
/proc/net/.
W przypadku deskryptorów plików, które nie mają odpowiadającego i-węzła (np. deskryptorów plików
tworzonych za pomocą bpf(2), epoll_create(2), eventfd(2), inotify_init(2), perf_event_open(2),
signalfd(2), timerfd_create(2) i userfaultfd(2)), wpis będzie dowiązaniem symbolicznym z
zawartością w postaci
anon_inode:typ-pliku
W wielu przypadkach (lecz nie wszystkich) typ-pliku jest otoczony nawiasami kwadratowymi.
Przykładowo dowiązanie symboliczne deskryptora pliku epoll będzie dowiązaniem symbolicznym,
którego zawartością jest łańcuch anon_inode:[eventpoll].
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 pthread_exit(3)).
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 /proc/pid/fd jako
argumenty wiersza poleceń. Na przykład, zakładając, że opcja -i określa plik wejściowy, a opcja -o
określa plik wyjściowy:
$ foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...
co daje działający filtr.
/proc/self/fd/N jest w przybliżeniu tym samym co /dev/fd/N na niektórych systemach uniksowych i
uniksopodobnych. Większość linuksowych skryptów MAKEDEV tworzy dowiązania symboliczne /dev/fd do
/proc/self/fd.
Większość systemów udostępnia dowiązania symboliczne /dev/stdin, /dev/stdout i dev/stderr, które
linkują odpowiednio do plików 0, 1 i 2 w /proc/self/fd. Powyższe, przykładowe polecenie może być
więc zapisane również tak:
$ foobar -i /dev/stdin -o /dev/stdout ...
Uprawnienie do rozwiązania lub odczytu (readlink(2)) dowiązań symbolicznych w tym katalogu, zależy
od sprawdzenia trybu dostępu ptrace: PTRACE_MODE_READ_FSCREDS; zob. ptrace(2).
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
/proc/pid/fd, 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:
$ echo test | sudo -u nobody cat
test
$ echo test | sudo -u nobody cat /proc/self/fd/0
cat: /proc/self/fd/0: Brak dostępu
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 nobody, zatem cat 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.
ZOBACZ TAKŻE
proc(5)
TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda
<robert@debian.org> 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.
Linux man-pages 6.9.1 2 maja 2024 r. proc_pid_fd(5)