pthread_atfork(3) Library Functions Manual pthread_atfork(3) NUME pthread_atfork - inregistreaza gestionarii de bifurcari BIBLIOTECA Biblioteca de fire de execuie POSIX (libpthread, -lpthread) REZUMAT #include int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)); DESCRIERE Funcia pthread_atfork() inregistreaza gestionarii de bifurcare care urmeaza sa fie executai atunci cand fork(2) este apelat de orice fir dintr-un proces. Gestionatorii sunt executai in contextul firului care apeleaza fork(2). Se pot inregistra trei tipuri de gestionari: o prepare specifica un gestionar care este executat in procesul parinte inainte de inceperea procesarii fork(2). o parent specifica un gestionar care este executat in procesul parinte dupa terminarea procesarii fork(2). o child specifica un gestionar care este executat in procesul-copil dupa terminarea procesarii fork(2). Oricare dintre cele trei argumente poate fi NULL in cazul in care nu este necesar nici un gestionar in faza corespunzatoare a procesarii fork(2). VALOAREA RETURNATA In caz de succes, pthread_atfork() returneaza zero. In caz de eroare, returneaza un numar de eroare. pthread_atfork() poate fi apelat de mai multe ori de catre un proces pentru a inregistra gestionari suplimentari. Operatorii pentru fiecare faza sunt apelai intr-o ordine specificata: operatorii prepare sunt apelai in ordinea inversa a inregistrarii; operatorii parent i child sunt apelai in ordinea inregistrarii. ERORI-IEIRE ENOMEM Nu s-a putut aloca memorie pentru a inregistra intrarea in lista de gestionare a bifurcarilor. STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001. NOTE Atunci cand fork(2) este apelat intr-un proces cu mai multe fire de execuie, numai firul de execuie care face apelul este duplicat in procesul-copil. Intenia iniiala a pthread_atfork() a fost de a permite revenirea procesului-copil la o stare coerenta. De exemplu, in momentul apelului la fork(2), este posibil ca alte fire sa aiba mutex-uri blocate care sunt vizibile in memoria din spaiul utilizatorului duplicata in procesul-copil. Astfel de mutex-uri nu vor fi niciodata deblocate, deoarece firele care au plasat blocajele nu sunt duplicate in copil. Intenia lui pthread_atfork() a fost de a oferi un mecanism prin care aplicaia (sau o biblioteca) sa se asigure ca starea mutex-urilor i a altor procese i fire de execuie va fi readusa la o stare coerenta. In practica, aceasta sarcina este, in general, prea dificila pentru a fi realizabila. Dupa ce un fork(2) intr-un proces cu mai multe fire de execuie returneaza in copil, copilul ar trebui sa apeleze numai funcii asincrone sigure pentru semnale (a se vedea signal-safety(7)) pana in momentul in care apeleaza execve(2) pentru a executa un nou program. POSIX.1 specifica faptul ca pthread_atfork() nu trebuie sa eueze cu eroarea EINTR. CONSULTAI I fork(2), atexit(3), pthreads(7) 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 pthread_atfork(3)