Provided by: manpages-pl-dev_20060617-3_all bug

NAZWA

       popen, pclose - we/wy procesu

SK/LADNIA

       #include <stdio.h>

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

       int pclose(FILE *stream);

OPIS

       Funkcja popen() otwiera proces, tworzc lcze, rozwidlajc si przez fork()
       i wywolujc powlok.  Poniewa  lcze  jest  z  definicji  jednokierunkowe,
       argument  type moe okrela tylko odczyt albo tylko zapis, nie oba naraz.
       Otrzymany w wyniku tego strumie bdzie tylko do odczytu  albo  tylko  do
       zapisu.

       Argument  command  jest  wskanikiem do zakoczonego znakiem NUL lacucha,
       zawierajcego wiersz polece powloki. Polecenie to jest  przekazywane  do
       /bin/sh  przy  uyciu  opcji  -c;  wszelka interpretacja jest dokonywana
       przez powlok. Argument type jest zakoczonym znakiem NUL lacuchem, ktory
       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 uyciu pclose() zamiast  fclose().   Zapisywanie  do
       takiego  strumienia  powoduje  pisanie na standardowe wejcie polecenia.
       Standardowe wyjcie  polecenia  jest  takie  samo,  jak  procesu,  ktory
       wywolal   popen(),  chyba  e  zostalo  to  zmienione  przez  polecenie.
       Podobnie,  odczyt  z  tak  otwartego  strumienia  powoduje  odczyt   ze
       standardowego  wyjcia  polecenia,  a  standardowe wejcie polecenia jest
       wtedy tosame z wejciem procesu, ktory wywolal popen().

       Naley zauway, e strumienie wyjciowe powstale z popen s domylnie w pelni
       buforowane.

       Funkcja  pclose oczekuje na zakoczenie stowarzyszonego procesu i zwraca
       jego kod zakoczenia, podobnie jak to czyni wait4.

WARTO ZWRACANA

       Funkcja popen zwraca NULL jeli nie powiodly si  wywolania  fork(2)  lub
       pipe(2), lub jeli nie udalo si przydzieli pamici.

       Funkcja  pclose  zwraca  -1  jeli  wait4 zwroci bld lub zostaly wykryte
       jakie inne bldy.

B/LDY

       Funkcja popen nie ustawia errno, jeeli nie uda  si  przydzieli  pamici.
       Jeeli  nie  powiod  si  wywolywane przez ni fork() lub pipe(), to errno
       bdzie odpowiednio ustawione. Jeeli argument mode bdzie nieprawidlowy  i
       zostanie to wykryte, to errno zostanie ustawione na EINVAL.

       Jeeli  nie  bdzie  moliwe  otrzymanie kodu zakoczenia procesu potomnego
       przez pclose(), to errno zostanie ustawione na ECHILD.

ZGODNE Z

       POSIX.2

USTERKI

       Poniewa offset standardowego wejcia  polecenia  otwartego  dla  odczytu
       jest  taki sam dla tego polecenia i dla procesu, ktory wywolal popen(),
       wic jeli oryginalny proces wykona  buforowany  odczyt,  to  pozycja  na
       wejciu  polecenia moe by inna ni oczekiwano. Podobnie, wyjcie polecenia
       otwartego  dla  zapisu  moe  zosta   wymieszane   z   wyjciem   procesu
       oryginalnego.  Temu ostatniemu mona zapobiec, wolajc przed popen funkcj
       fflush(3).

       Bld w  wywolaniu  powloki  jest  nieodronialny  od  bldu  powloki  przy
       wywolywaniu  polecenia,  czy  od natychmiastowego zakoczenia polecenia.
       Jedynym ladem jest kod zakoczenia rowny 127.

HISTORIA

       Funkcje popen() i pclose() pojawily si w wersji 7 AT&T UNIX.

ZOBACZ TAKE

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

INFORMACJE O T/LUMACZENIU

       Powysze  tlumaczenie  pochodzi z nieistniejcego ju Projektu Tlumaczenia
       Manuali i moe nie by aktualne. W razie zauwaenia ronic  midzy  powyszym
       opisem  a  rzeczywistym  zachowaniem  opisywanego programu lub funkcji,
       prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.