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

NUME
pthread_setname_np, pthread_getname_np - stabilește/obține numele unui fir
BIBLIOTECA
Biblioteca de fire de execuție POSIX (libpthread, -lpthread)
SINOPSIS
#define _GNU_SOURCE /* Consultați feature_test_macros(7) */
#include <pthread.h>
int pthread_setname_np(pthread_t thread, const char *name);
int pthread_getname_np(pthread_t thread, char name[.size], size_t size);
DESCRIERE
În mod implicit, toate firele create cu ajutorul funcției pthread_create() moștenesc numele programului.
Funcția pthread_setname_np() 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 („\0”).
Argumentul thread specifică firul al cărui nume urmează să fie schimbat; name specifică noul nume.
Funcția pthread_getname_np() poate fi utilizată pentru a prelua numele firului. Argumentul thread
specifică firul al cărui nume trebuie să fie recuperat. Memoria tampon name este utilizată pentru a
returna numele firului; size specifică numărul de octeți disponibili în name. Memoria tampon specificată
de name 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ă.
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.
ERORI-IEȘIRE
Funcția pthread_setname_np() poate eșua cu următoarea eroare:
ERANGE Lungimea șirului specificat indicat de name depășește limita permisă.
Funcția pthread_getname_np() poate eșua cu următoarea eroare:
ERANGE Memoria tampon specificată de name și size este prea mică pentru a conține numele firului.
Dacă oricare dintre aceste funcții nu reușește să deschidă /proc/self/task/tid/comm, apelul poate eșua cu
una dintre erorile descrise în open(2).
ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
│ Interfață │ Atribut │ Valoare │
├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
│ pthread_setname_np(), pthread_getname_np() │ Siguranța firelor │ MT-Safe │
└─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘
STANDARDE
GNU; de aici și sufixul „_np” (neportabil) din denumiri.
ISTORIC
glibc 2.12.
NOTE
pthread_setname_np() scrie intern în fișierul specific firului comm din cadrul sistemului de fișiere
/proc: /proc/self/task/tid/comm. pthread_getname_np() îl recuperează din aceeași locație.
EXEMPLE
Programul de mai jos demonstrează utilizarea pthread_setname_np() și pthread_getname_np().
Următoarea sesiune shell arată un exemplu de execuție a programului:
$ ./a.out
A fost creat un fir. Numele implicit este: a.out
Numele firului după definire este THREADFOO.
^Z # Suspendă programul
[1]+ Stopped ./a.out
$ ps H -C a.out -o 'pid tid cmd comm'
PID TID CMD COMMAND
5990 5990 ./a.out a.out
5990 5991 ./a.out THREADFOO
$ cat /proc/5990/task/5990/comm
a.out
$ cat /proc/5990/task/5991/comm
THREADFOO
Sursa programului
#define _GNU_SOURCE
#include <err.h>
#include <errno.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#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\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.\n", thread_name);
rc = pthread_join(thread, NULL);
if (rc != 0)
errc(EXIT_FAILURE, rc, "pthread_join");
printf("Gata\n");
exit(EXIT_SUCCESS);
}
CONSULTAȚI ȘI
prctl(2), pthread_create(3), pthreads(7)
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 15 iunie 2024 pthread_setname_np(3)