Provided by: manpages-pl_4.27.0-1_all bug

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)