Provided by:
manpages-pl-dev_20060617-3_all 
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.