bionic (3) popen.3.gz

Provided by: manpages-pl-dev_0.7-1_all bug

NAZWA

       popen, pclose - we/wy procesu

SKŁADNIA

       #include <stdio.h>

       FILE *popen(const char *command, const char *type);

       int pclose(FILE *stream);

OPIS

        Uwaga! To tłumaczenie może być nieaktualne!

       Funkcja  popen()  otwiera  proces,  tworząc  łącze,  rozwidlając  się  przez  fork() i wywołując powłokę.
       Ponieważ łącze jest z definicji jednokierunkowe, argument type może  określać  tylko  odczyt  albo  tylko
       zapis, nie oba naraz. Otrzymany w wyniku tego strumień będzie tylko do odczytu albo tylko do zapisu.

       Argument  command  jest  wskaźnikiem  do  zakończonego znakiem NUL łańcucha, zawierającego wiersz poleceń
       powłoki. Polecenie to jest przekazywane do /bin/sh przy  użyciu  opcji  -c;  wszelka  interpretacja  jest
       dokonywana  przez powłokę. Argument type jest zakończonym znakiem NUL łańcuchem, który musi być albo `r',
       albo `w' (odpowiednio dla odczytu i zapisu).

       Wartość zwracana przez popen() to normalny strumień we/wy, lecz powinien  on  być  zamykany  przy  użyciu
       pclose()  zamiast  fclose().   Zapisywanie  do takiego strumienia powoduje pisanie na standardowe wejście
       polecenia. Standardowe wyjście polecenia jest takie samo, jak procesu, który wywołał  popen(),  chyba  że
       zostało  to  zmienione  przez  polecenie.  Podobnie, odczyt z tak otwartego strumienia powoduje odczyt ze
       standardowego wyjścia polecenia, a standardowe wejście polecenia jest wtedy tożsame z  wejściem  procesu,
       który wywołał popen().

       Należy zauważyć, że strumienie wyjściowe powstałe z popen są domyślnie w pełni buforowane.

       Funkcja  pclose  oczekuje  na zakończenie stowarzyszonego procesu i zwraca jego kod zakończenia, podobnie
       jak to czyni wait4.

WARTOŚĆ ZWRACANA

       Funkcja popen zwraca NULL jeśli nie powiodły się wywołania fork(2) lub pipe(2), lub jeśli nie  udało  się
       przydzielić pamięci.

       Funkcja pclose zwraca -1 jeśli wait4 zwróci błąd lub zostały wykryte jakieś inne błędy.

BŁĘDY

       Funkcja  popen  nie  ustawia  errno,  jeżeli  nie  uda  się  przydzielić  pamięci. Jeżeli nie powiodą się
       wywoływane przez nią fork() lub pipe(), to errno  będzie  odpowiednio  ustawione.  Jeżeli  argument  mode
       będzie nieprawidłowy i zostanie to wykryte, to errno zostanie ustawione na EINVAL.

       Jeżeli nie będzie możliwe otrzymanie kodu zakończenia procesu potomnego przez pclose(), to errno zostanie
       ustawione na ECHILD.

ZGODNE Z

       POSIX.2

USTERKI

       Ponieważ offset standardowego wejścia polecenia otwartego dla odczytu jest taki sam dla tego polecenia  i
       dla  procesu, który wywołał popen(), więc jeśli oryginalny proces wykona buforowany odczyt, to pozycja na
       wejściu polecenia może być inna niż oczekiwano. Podobnie, wyjście polecenia  otwartego  dla  zapisu  może
       zostać  wymieszane  z  wyjściem procesu oryginalnego. Temu ostatniemu można zapobiec, wołając przed popen
       funkcję fflush(3).

       Błąd w wywołaniu powłoki jest  nieodróżnialny  od  błędu  powłoki  przy  wywoływaniu  polecenia,  czy  od
       natychmiastowego zakończenia polecenia. Jedynym śladem jest kod zakończenia równy 127.

HISTORIA

       Funkcje popen() i pclose() pojawiły się w wersji 7 AT&T UNIX.

ZOBACZ TAKŻE

       fork(2), sh(1), pipe(2), wait4(2), fflush(3), fclose(3), fopen(3), stdio(3), system(3)

INFORMACJE O TŁUMACZENIU

       Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne.
       W razie zauważenia różnic między powyższym opisem a rzeczywistym  zachowaniem  opisywanego  programu  lub
       funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:

              man --locale=C 3 popen

       Prosimy   o   pomoc   w   aktualizacji   stron   man  -  więcej  informacji  można  znaleźć  pod  adresem
       http://sourceforge.net/projects/manpages-pl/.