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

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țăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ 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)