.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C) 2012 Chandan Apsangi .\" and Copyright (C) 2013 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pthread_setname_np 3 "23 iulie 2024" "Pagini de manual de Linux 6.12" .SH NUME pthread_setname_np, pthread_getname_np \- stabilește/obține numele unui fir .SH BIBLIOTECA Biblioteca de fire de execuție POSIX (\fIlibpthread\fP, \fI\-lpthread\fP) .SH SINOPSIS .nf \fB#define _GNU_SOURCE\fP /* Consultați feature_test_macros(7) */ \fB#include \fP .P \fBint pthread_setname_np(pthread_t \fP\fIthread\fP\fB, const char *\fP\fIname\fP\fB);\fP \fBint pthread_getname_np(pthread_t \fP\fIthread\fP\fB, char \fP\fIname\fP\fB[.\fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB);\fP .fi .SH DESCRIERE În mod implicit, toate firele create cu ajutorul funcției \fBpthread_create\fP() moștenesc numele programului. Funcția \fBpthread_setname_np\fP() poate fi utilizată pentru a stabili un nume unic pentru un fir, ceea ce poate fi util pentru depanarea aplicațiilor cu mai multe fire. Numele firului este un șir semnificativ în limbajul C, a cărui lungime este limitată la 16 caractere, inclusiv octetul nul de terminare („\[rs]0”). Argumentul \fIthread\fP specifică firul al cărui nume urmează să fie schimbat; \fIname\fP specifică noul nume. .P Funcția \fBpthread_getname_np\fP() poate fi utilizată pentru a prelua numele firului. Argumentul \fIthread\fP specifică firul al cărui nume trebuie să fie recuperat. Memoria tampon \fIname\fP este utilizată pentru a returna numele firului; \fIsize\fP specifică numărul de octeți disponibili în \fIname\fP. Memoria tampon specificată de \fIname\fP trebuie să aibă o lungime de cel puțin 16 caractere. Numele firului returnat în memoria tampon de ieșire va avea terminație nulă. .SH "VALOAREA RETURNATĂ" În caz de succes, aceste funcții returnează 0; în caz de eroare, ele returnează un număr de eroare diferit de zero. .SH ERORI\-IEȘIRE Funcția \fBpthread_setname_np\fP() poate eșua cu următoarea eroare: .TP \fBERANGE\fP Lungimea șirului specificat indicat de \fIname\fP depășește limita permisă. .P Funcția \fBpthread_getname_np\fP() poate eșua cu următoarea eroare: .TP \fBERANGE\fP Memoria tampon specificată de \fIname\fP și \fIsize\fP este prea mică pentru a conține numele firului. .P Dacă oricare dintre aceste funcții nu reușește să deschidă \fI/proc/self/task/\fPtid\fI/comm\fP, apelul poate eșua cu una dintre erorile descrise în \fBopen\fP(2). .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBpthread_setname_np\fP(), \fBpthread_getname_np\fP() T} Siguranța firelor MT\-Safe .TE .SH STANDARDE GNU; de aici și sufixul „_np” (neportabil) din denumiri. .SH ISTORIC glibc 2.12. .SH NOTE \fBpthread_setname_np\fP() scrie intern în fișierul specific firului \fIcomm\fP din cadrul sistemului de fișiere \fI/proc\fP: \fI/proc/self/task/\fPtid\fI/comm\fP. \fBpthread_getname_np\fP() îl recuperează din aceeași locație. .SH EXEMPLE Programul de mai jos demonstrează utilizarea \fBpthread_setname_np\fP() și \fBpthread_getname_np\fP(). .P Următoarea sesiune shell arată un exemplu de execuție a programului: .P .in +4n .EX $\fB ./a.out\fP A fost creat un fir. Numele implicit este: a.out Numele firului după definire este THREADFOO. \fB\[ha]Z\fP # Suspendă programul [1]+ Stopped ./a.out $ \fBps H \-C a.out \-o \[aq]pid tid cmd comm\[aq]\fP PID TID CMD COMMAND 5990 5990 ./a.out a.out 5990 5991 ./a.out THREADFOO $ \fBcat /proc/5990/task/5990/comm\fP a.out $ \fBcat /proc/5990/task/5991/comm\fP THREADFOO .EE .in .SS "Sursa programului" .\" SRC BEGIN (pthread_setname_np.c) \& .EX #define _GNU_SOURCE #include #include #include #include #include #include #include \& #define NAMELEN 16 \& static void * threadfunc(void *parm) { sleep(5); // permite programului principal să stabilească numele firului return NULL; } \& int main(int argc, char *argv[]) { pthread_t thread; int rc; char thread_name[NAMELEN]; \& rc = pthread_create(&thread, NULL, threadfunc, NULL); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_create"); \& rc = pthread_getname_np(thread, thread_name, NAMELEN); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_getname_np"); \& printf("A fost creat un fir. Numele implicit este: %s\[rs]n", thread_name); rc = pthread_setname_np(thread, (argc > 1) ? argv[1] : "THREADFOO"); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_setname_np"); \& sleep(2); \& rc = pthread_getname_np(thread, thread_name, NAMELEN); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_getname_np"); printf("Numele firului după definire este %s.\[rs]n", thread_name); \& rc = pthread_join(thread, NULL); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_join"); \& printf("Gata\[rs]n"); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "CONSULTAȚI ȘI" .ad l .nh \fBprctl\fP(2), \fBpthread_create\fP(3), \fBpthreads\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 .