Rechercher une page de manuel
popen
Langue: pl
Version: 1998-05-07 (openSuse - 09/10/07)
Section: 3 (Bibliothèques de fonctions)
NAZWA
popen, pclose - we/wy procesuSK£ADNIA
#include <stdio.h>FILE *popen(const char *command, const char *type);
int pclose(FILE *stream);
OPIS
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.2USTERKI
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)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre