popen(3) Library Functions Manual popen(3) NUME popen, pclose - flux de conducta catre sau de la un proces BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include FILE *popen(const char *command, const char *type); int pclose(FILE *stream); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): popen(), pclose(): _POSIX_C_SOURCE >= 2 || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE DESCRIERE Funcia popen() deschide un proces prin crearea unei conducte, prin bifurcare i prin invocarea shell-ului. Deoarece o conducta este, prin definiie, unidirecionala, argumentul type poate specifica numai citire sau scriere, nu ambele; fluxul rezultat este, in consecina, numai-pentru-citire sau numai-pentru-scriere. Argumentul command este un indicator la un ir de caractere cu terminaie nula care conine o linie de comanda de tip shell. Aceasta comanda este transmisa catre /bin/sh folosind opiunea -c; interpretarea, daca este cazul, este efectuata de catre shell. Argumentul type este un indicator catre un ir de caractere cu terminaie nula care trebuie sa conina fie litera ,,r" pentru citire, fie litera ,,w" pentru scriere. Incepand cu glibc 2.9, acest argument poate include, de asemenea, litera ,,e", care determina activarea fanionului ,,close-on-exec" (FD_CLOEXEC) pe descriptorul de fiier subiacent; a se vedea descrierea fanionului O_CLOEXEC in open(2) pentru motivele pentru care acest lucru poate fi util. Valoarea returnata de popen() este un flux de intrare/ieire standard normal in toate privinele, cu excepia faptului ca trebuie inchis cu pclose() in loc de fclose(3). Scrierea pe un astfel de flux se scrie in intrarea standard a comenzii; ieirea standard a comenzii este aceeai cu cea a procesului care a apelat popen(), cu excepia cazului in care aceasta este modificata de comanda insai. In schimb, citirea de pe flux citete ieirea standard a comenzii, iar intrarea standard a comenzii este aceeai cu cea a procesului care a apelat popen(). Reinei ca fluxurile de ieire popen() sunt stocate in bloc in mod implicit. Funcia pclose() ateapta ca procesul asociat sa se incheie i returneaza starea de ieire a comenzii, aa cum este returnata de wait4(2). VALOAREA RETURNATA popen(): in caz de succes, returneaza un indicator catre un flux deschis care poate fi utilizat pentru a citi sau a scrie in conducta; daca apelurile fork(2) sau pipe(2) eueaza sau daca funcia nu poate aloca memorie, se returneaza NULL. pclose(): in caz de succes, returneaza starea de ieire a comenzii; daca wait4(2) returneaza o eroare sau daca este detectata o alta eroare, se returneaza -1. In caz de eec, ambele funcii configureaza errno pentru a indica eroarea. ERORI-IEIRE Funcia popen() nu configureaza errno daca alocarea memoriei eueaza. In cazul in care funcia fork(2) sau pipe(2) subiacenta eueaza, errno este configurata pentru a indica eroarea. In cazul in care argumentul type nu este valid, iar aceasta condiie este detectata, errno este stabilita la EINVAL. Daca pclose() nu poate obine starea copilului, errno este stabilita la ECHILD. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |popen(), pclose() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ VERSIUNI Valoarea ,,e" pentru type este o extensie Linux. STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001. AVERTISMENTE Citii cu atenie Avertismentele din system(3). ERORI Deoarece intrarea standard a unei comenzi deschise pentru citire ii imparte poziia de cautare cu procesul care a apelat popen(), in cazul in care procesul original a efectuat o citire in memoria tampon, este posibil ca poziia de intrare a comenzii sa nu fie cea ateptata. In mod similar, ieirea unei comenzi deschise pentru scriere se poate amesteca cu cea a procesului original. Aceasta din urma poate fi evitata prin apelarea fflush(3) inainte de popen(). Eecul executarii shell-ului nu se deosebete de eecul executarii comenzii shell-ului sau de ieirea imediata a comenzii. Singurul indiciu este o stare de ieire de 127. CONSULTAI I sh(1), fork(2), pipe(2), wait4(2), fclose(3), fflush(3), fopen(3), stdio(3), system(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 popen(3)