intro(2) System Calls Manual intro(2)

intro - introducere la apelurile de sistem

Secțiunea 2 a manualului descrie apelurile de sistem Linux. Un apel de sistem este un punct de intrare în nucleul Linux. De obicei, apelurile de sistem nu sunt invocate direct: în schimb, majoritatea apelurilor de sistem au funcții de învăluire corespunzătoare din biblioteca C care execută pașii necesari (de exemplu, trecerea în modul nucleu) pentru a invoca apelul de sistem. Astfel, efectuarea unui apel de sistem arată la fel ca și invocarea unei funcții normale de bibliotecă.

În multe cazuri, funcția de învăluire a bibliotecii C nu face nimic mai mult decât:

copierea argumentelor și a numărului unic de apel de sistem în registrele în care nucleul le așteaptă;
trecerea în modul nucleu, moment în care nucleul face adevărata muncă a apelului de sistem;
definirea errno în cazul în care apelul de sistem returnează un număr de eroare atunci când nucleul readuce CPU în modul utilizator.

Cu toate acestea, în unele cazuri, o funcție de învăluire poate face mai mult decât atât, de exemplu, poate efectua o preprocesare a argumentelor înainte de a trece în modul nucleu sau o postprocesare a valorilor returnate de apelul de sistem. În acest caz, paginile de manual din secțiunea 2 încearcă, în general, să noteze detaliile atât ale interfeței API a bibliotecii C (de obicei GNU), cât și ale apelului de sistem brut. Cel mai frecvent, DESCRIEREA principală se va concentra pe interfața bibliotecii C, iar diferențele pentru apelul de sistem sunt tratate în secțiunea NOTE.

Pentru o listă a apelurilor de sistem Linux, consultați syscalls(2).

În caz de eroare, majoritatea apelurilor de sistem returnează un număr de eroare negativ (adică valoarea negată a uneia dintre constantele descrise în errno(3)). Funcția de învăluire a bibliotecii C ascunde acest detaliu apelantului: atunci când un apel de sistem returnează o valoare negativă, funcția de învăluire copiază valoarea absolută în variabila errno și returnează -1 ca valoare de întoarcere a funcției de învăluire.

Valoarea returnată de un apel de sistem reușit depinde de apelul respectiv. Multe apeluri de sistem returnează 0 în caz de succes, dar unele pot returna valori diferite de zero în urma unui apel reușit. Detaliile sunt descrise în paginile de manual individuale.

În unele cazuri, programatorul trebuie să definească o macro de testare a caracteristicilor pentru a obține declarația unui apel de sistem din fișierul antet specificat în secțiunea SYNOPSIS din pagina de manual. (În cazul în care este necesar, aceste macrocomenzi de testare a caracteristicilor trebuie să fie definite înainte de a include fișiere de antet any). În astfel de cazuri, macrocomanda necesară este descrisă în pagina de manual. Pentru informații suplimentare despre macrocomenzile de testare a caracteristicilor, consultați feature_test_macros(7).

Anumiți termeni și anumite abrevieri sunt utilizate pentru a indica variantele și standardele UNIX la care sunt conforme apelurile din această secțiune. A se vedea standards(7).

În cele mai multe cazuri, nu este necesar să se apeleze direct la un apel de sistem, dar există momente în care biblioteca Standard C nu implementează o funcție de învăluire utilă pentru a face acest lucru. În acest caz, programatorul trebuie să invoce manual apelul de sistem folosind syscall(2). Din punct de vedere istoric, acest lucru era posibil și prin utilizarea uneia dintre macrocomenzile _syscall descrise în _syscall(2).

Uitați-vă în antetul paginii sursă a manualului pentru a afla autorul (autorii) și condițiile de drepturi de autor. Rețineți că acestea pot fi diferite de la o pagină la alta!

_syscall(2), syscall(2), syscalls(2), errno(3), intro(3), capabilities(7), credentials(7), feature_test_macros(7), mq_overview(7), path_resolution(7), pipe(7), pty(7), sem_overview(7), shm_overview(7), signal(7), socket(7), standards(7), symlink(7), system_data_types(7), sysvipc(7), time(7)

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.

31 octombrie 2023 Pagini de manual de Linux 6.06