pthread_setname_np(3) Library Functions Manual pthread_setname_np(3) NOM pthread_setname_np, pthread_getname_np - Definir ou obtenir le nom d'un thread BIBLIOTHEQUE Bibliotheque de threads POSIX (libpthread, -lpthread) SYNOPSIS #define _GNU_SOURCE /* Consultez feature_test_macros(7) */ #include int pthread_setname_np(pthread_t thread, const char *nom); int pthread_getname_np(pthread_t thread, char nom[.taille], size_t taille); DESCRIPTION Par defaut, tous les threads crees par pthread_create() heritent du nom de programme. La fonction pthread_setname_np() permet d'affecter un nom propre a un thread, ce qui peut etre utile pour deboguer une application multithread. Le nom du thread est une chaine de langage C significative, dont la longueur ne peut depasser 16 caracteres, caractere nul final ('\0') inclus. L'argument thread indique le thread dont le nom doit etre change ; le nouveau nom est precise dans nom. La fonction pthread_getname_np() permet de recuperer le nom du thread. L'argument thread indique le thread dont le nom doit etre recupere. Le tampon nom est utilise pour renvoyer le nom du thread ; taille indique le nombre d'octets disponibles dans nom. La longueur du tampon indique dans nom doit etre d'au moins 16 caracteres. Le nom du thread renvoye dans le tampon de retour est termine par caractere nul. VALEUR RENVOYEE En cas de succes, ces fonctions renvoient 0 ; en cas d'erreur, elles renvoient un code d'erreur non nul. ERREURS La fonction pthread_setname_np() peut echouer avec l'erreur suivante : ERANGE La longueur de la chaine vers laquelle pointe nom depasse la limite autorisee. La fonction pthread_getname_np() peut echouer avec l'erreur suivante : ERANGE Le tampon indique par nom et taille a une taille insuffisante pour contenir le nom du thread. Si l'une de ces fonctions ne parvient pas a ouvrir /proc/self/task/tid/comm, alors l'appel peut echouer en retournant l'une des erreurs decrites dans open(2) ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |pthread_setname_np(), | Securite des threads | MT-Safe | |pthread_getname_np() | | | +---------------------------------+--------------------------+---------+ STANDARDS GNU ; d'ou le suffixe << _np >> (non portable) dans leur nom. HISTORIQUE glibc 2.12. NOTES pthread_setname_np() ecrit en interne dans le fichier comm du thread (dans le systeme de fichiers /proc) : /proc/self/task/tid/comm. pthread_getname_np() recupere le nom du thread a ce meme endroit. EXEMPLES Le programme ci-dessous illustre l'utilisation de pthread_setname_np() et de pthread_getname_np(). La session d'interpreteur suivant montre un echantillon d'execution du programme : $ ./a.out Thread cree. Le nom par defaut est : a.out Le nom du thread apres nommage est THREADFOO. ^Z # Suspendre l'execution du programme [1]+ Stoppe ./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 Source du programme #define _GNU_SOURCE #include #include #include #include #include #include #include #define NAMELEN 16 static void * threadfunc(void *parm) { sleep(5); // permet au programme principal de definir // le nom du thread 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("Thread cree. Le nom par defaut est : %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("Le nom du thread apres nommage est %s.\n", thread_name); rc = pthread_join(thread, NULL); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_join"); printf("Done\n"); exit(EXIT_SUCCESS); } VOIR AUSSI prctl(2), pthread_create(3), pthreads(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Frederic Hantrais et Jean- Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.8 2 mai 2024 pthread_setname_np(3)