Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       popen, pclose - flux de conductă către sau de la un proces

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <stdio.h>

       FILE *popen(const char *command, const char *type);
       int pclose(FILE *stream);

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       popen(), pclose():
           _POSIX_C_SOURCE >= 2
               || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIERE

       Funcția  popen()  deschide  un  proces  prin  crearea  unei  conducte,  prin  bifurcare și prin invocarea
       shell-ului. Deoarece o conductă este, prin definiție, unidirecțională, argumentul  type  poate  specifica
       numai  citire  sau  scriere,  nu  ambele;  fluxul  rezultat  este, în consecință, numai-pentru-citire sau
       numai-pentru-scriere.

       Argumentul command este un indicator la un șir de caractere cu terminație nulă care conține  o  linie  de
       comandă  de tip shell.  Această comandă este transmisă către /bin/sh folosind opțiunea -c; interpretarea,
       dacă este cazul, este efectuată de către shell.

       Argumentul type este un indicator către un șir de caractere cu terminație nulă care  trebuie  să  conțină
       fie  litera „r” pentru citire, fie litera „w” pentru scriere. Începând cu glibc 2.9, acest argument poate
       include, de asemenea, litera „e”, care determină activarea  fanionului  „close-on-exec”  (FD_CLOEXEC)  pe
       descriptorul  de  fișier subiacent; a se vedea descrierea fanionului O_CLOEXEC în open(2) pentru motivele
       pentru care acest lucru poate fi util.

       Valoarea returnată de popen() este un flux de intrare/ieșire standard  normal  în  toate  privințele,  cu
       excepția  faptului  că  trebuie  închis cu pclose() în loc de fclose(3). Scrierea pe un astfel de flux se
       scrie în intrarea standard a comenzii; ieșirea standard a comenzii este aceeași cu cea a procesului  care
       a  apelat  popen(),  cu  excepția  cazului  în care aceasta este modificată de comanda însăși. În schimb,
       citirea de pe flux citește ieșirea standard a comenzii, iar intrarea standard a comenzii este aceeași  cu
       cea a procesului care a apelat popen().

       Rețineți că fluxurile de ieșire popen() sunt stocate în bloc în mod implicit.

       Funcția  pclose()  așteaptă  ca procesul asociat să se încheie și returnează starea de ieșire a comenzii,
       așa cum este returnată de wait4(2).

VALOAREA RETURNATĂ

       popen(): în caz de succes, returnează un indicator către un flux deschis care poate fi utilizat pentru  a
       citi  sau a scrie în conductă; dacă apelurile fork(2) sau pipe(2) eșuează sau dacă funcția nu poate aloca
       memorie, se returnează NULL.

       pclose(): în caz de succes, returnează starea de ieșire a comenzii; dacă wait4(2) returnează o eroare sau
       dacă este detectată o altă eroare, se returnează -1.

       În caz de eșec, ambele funcții configurează errno pentru a indica eroarea.

ERORI-IEȘIRE

       Funcția popen() nu configurează errno dacă alocarea memoriei eșuează. În cazul în  care  funcția  fork(2)
       sau  pipe(2)  subiacentă  eșuează,  errno  este  configurată  pentru  a  indica eroarea. În cazul în care
       argumentul type nu este valid, iar această condiție este detectată, errno este stabilită la EINVAL.

       Dacă pclose() nu poate obține starea copilului, errno este stabilită la ECHILD.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │ InterfațăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ popen(), pclose()                                                       │ Siguranța firelor │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘

VERSIUNI

       Valoarea „e” pentru type este o extensie Linux.

STANDARDE

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001.

AVERTISMENTE

       Citiți cu atenție Avertismentele din system(3).

ERORI

       Deoarece intrarea standard a unei comenzi deschise pentru  citire  își  împarte  poziția  de  căutare  cu
       procesul care a apelat popen(), în cazul în care procesul original a efectuat o citire în memoria tampon,
       este  posibil  ca  poziția  de  intrare  a comenzii să nu fie cea așteptată. În mod similar, ieșirea unei
       comenzi deschise pentru scriere se poate amesteca cu cea a procesului original. Aceasta din urmă poate fi
       evitată prin apelarea fflush(3) înainte de popen().

       Eșecul executării shell-ului nu se deosebește de eșecul executării comenzii  shell-ului  sau  de  ieșirea
       imediată a comenzii. Singurul indiciu este o stare de ieșire de 127.

CONSULTAȚI ȘI

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

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  sau  o
       versiune   ulterioară   cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se  asumă  NICIO
       RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să  trimiteți  un  e-mail  la  translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                           popen(3)