Provided by: manpages-pl-dev_0.6-2_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/.