.\" -*- coding: UTF-8 -*- .\" Copyright (C) Markus Kuhn, 1996 .\" and Copyright (C) Linux Foundation, 2008, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" 1996-04-10 Markus Kuhn .\" First version written .\" Modified, 2004-10-24, aeb .\" 2008-06-24, mtk .\" Minor rewrites of some parts. .\" NOTES: describe case where clock_nanosleep() can be preferable. .\" NOTES: describe CLOCK_REALTIME versus CLOCK_NANOSLEEP .\" Replace crufty discussion of HZ with a pointer to time(7). .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH nanosleep 2 "30 martie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME nanosleep \- somn de înaltă rezoluție .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP .PP \fBint nanosleep(const struct timespec *\fP\fIreq\fP\fB,\fP \fB struct timespec *_Nullable \fP\fIrem\fP\fB);\fP .fi .PP .RS -4 Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați \fBfeature_test_macros\fP(7)): .RE .PP \fBnanosleep\fP(): .nf _POSIX_C_SOURCE >= 199309L .fi .SH DESCRIERE \fBnanosleep\fP() suspendă execuția firului apelant până când se scurge cel puțin timpul specificat în \fI*req\fP sau până la livrarea unui semnal care declanșează invocarea unui gestionar în firul apelant sau care termină procesul. .PP În cazul în care apelul este întrerupt de un gestionar de semnal, \fBnanosleep\fP() returnează \-1, stabilește \fIerrno\fP la \fBEINTR\fP și scrie timpul rămas în structura indicată de \fIrem\fP, cu excepția cazului în care \fIrem\fP este NULL. Valoarea lui \fI*rem\fP poate fi apoi utilizată pentru a apela din nou \fBnanosleep\fP() și pentru a finaliza pauza specificată (dar vedeți secțiunea NOTE). .PP Structura \fBtimespec\fP(3) este utilizată pentru a specifica intervale de timp cu o precizie de o nanosecundă. .PP Valoarea câmpului nanosecunde trebuie să fie cuprinsă în intervalul [0, 999999999]. .PP În comparație cu \fBsleep\fP(3) și \fBusleep\fP(3), \fBnanosleep\fP() are următoarele avantaje: oferă o rezoluție mai mare pentru specificarea intervalului de somn; POSIX.1 specifică în mod explicit că nu interacționează cu semnalele; și facilitează sarcina de reluare a unui somn care a fost întrerupt de un gestionar de semnal. .SH "VALOAREA RETURNATĂ" În cazul în care se reușește să doarmă pentru intervalul de timp solicitat, \fBnanosleep\fP() returnează 0. Dacă apelul este întrerupt de un gestionar de semnal sau întâmpină o eroare, atunci returnează \-1, cu \fIerrno\fP configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEFAULT\fP Problemă cu copierea informațiilor din spațiul utilizatorului. .TP \fBEINTR\fP Pauza a fost întreruptă de un semnal care a fost transmis firului (a se vedea \fBsignal\fP(7)). Timpul de somn rămas a fost scris în \fI*rem\fP, astfel încât firul să poată apela din nou cu ușurință \fBnanosleep\fP() și să continue cu pauza. .TP \fBEINVAL\fP Valoarea din câmpul \fItv_nsec\fP nu era cuprinsă în intervalul [0, 999999999] sau \fItv_sec\fP era negativă. .SH VERSIUNI .\" See also http://thread.gmane.org/gmane.linux.kernel/696854/ .\" Subject: nanosleep() uses CLOCK_MONOTONIC, should be CLOCK_REALTIME? .\" Date: 2008-06-22 07:35:41 GMT POSIX.1 specifică faptul că \fBnanosleep\fP() trebuie să măsoare timpul în raport cu ceasul \fBCLOCK_REALTIME\fP. Cu toate acestea, Linux măsoară timpul folosind ceasul \fBCLOCK_MONOTONIC\fP. Probabil că acest lucru nu contează, deoarece specificația POSIX.1 pentru \fBclock_settime\fP(2) spune că modificările discontinue în \fBCLOCK_REALTIME\fP nu ar trebui să afecteze \fBnanosleep\fP(): .RS .PP Fixarea valorii ceasului \fBCLOCK_REALTIME\fP prin \fBclock_settime\fP(2) nu are niciun efect asupra firelor care sunt blocate în așteptarea unui serviciu de timp relativ bazat pe acest ceas, inclusiv asupra funcției \fBnanosleep\fP(); \&... În consecință, aceste servicii de timp expiră atunci când se scurge intervalul relativ solicitat, indiferent de valoarea nouă sau veche a ceasului. .RE .SH STANDARDE POSIX.1\-2008. .SH ISTORIC POSIX.1\-2001. .PP Pentru a sprijini aplicațiile care necesită pauze mult mai precise (de exemplu, pentru a controla anumite echipamente hardware cu timp critic), \fBnanosleep\fP() ar putea gestiona pauze de până la 2 milisecunde prin așteptare ocupată cu precizie de microsecunde atunci când este apelat de un fir programat conform unei politici de timp real precum \fBSCHED_FIFO\fP sau \fBSCHED_RR\fP. Această extensie specială a fost eliminată în Linux 2.5.39 și, prin urmare, nu este disponibilă în Linux 2.6.0 și în nucleele ulterioare. .SH NOTE În cazul în care intervalul specificat în \fIreq\fP nu este un multiplu exact al granularității (fineții) ceasului de bază (a se vedea \fBtime\fP(7)), atunci intervalul va fi rotunjit la următorul multiplu. În plus, după ce se termină somnul, este posibil să mai existe o întârziere până când CPU devine liber pentru a executa din nou firul de apelare. .PP Faptul că \fBnanosleep\fP() doarme pentru un interval relativ poate fi problematic dacă apelul este reluat în mod repetat după ce a fost întrerupt de semnale, deoarece timpul dintre întreruperi și reluarea apelului va duce la o derivă în momentul în care somnul se termină în cele din urmă. Această problemă poate fi evitată prin utilizarea \fBclock_nanosleep\fP(2) cu o valoare absolută a timpului. .SH ERORI Dacă un program care captează semnale și utilizează \fBnanosleep\fP() primește semnale la o rată foarte mare, atunci întârzierile de programare și erorile de rotunjire în calcularea de către nucleu a intervalului de somn și a valorii \fIremain\fP returnate înseamnă că valoarea \fIremain\fP poate \fIcrește\fP constant la reporniri succesive ale apelului \fBnanosleep\fP(). Pentru a evita astfel de probleme, utilizați \fBclock_nanosleep\fP(2) cu fanionul \fBTIMER_ABSTIME\fP pentru a dormi la un termen limită absolut. .PP În Linux 2.4, dacă \fBnanosleep\fP() este oprit de un semnal (de exemplu, \fBSIGTSTP\fP), atunci apelul eșuează cu eroarea \fBEINTR\fP după ce firul este reluat de un semnal \fBSIGCONT\fP. Dacă apelul de sistem este repornit ulterior, atunci timpul pe care firul l\-a petrecut în starea de oprire \fInu\fP este contabilizat în intervalul de așteptare. Această problemă este rezolvată în Linux 2.6.0 și în nucleele ulterioare. .SH "CONSULTAȚI ȘI" \fBclock_nanosleep\fP(2), \fBrestart_syscall\fP(2), \fBsched_setscheduler\fP(2), \fBtimer_create\fP(2), \fBsleep\fP(3), \fBtimespec\fP(3), \fBusleep\fP(3), \fBtime\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .