mirror of https://github.com/mkerrisk/man-pages
pthread_setname_np.3: Rework error handing in example program
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
91e38d87e0
commit
b615a97e01
|
@ -98,7 +98,6 @@ Done
|
|||
\&
|
||||
.nf
|
||||
#define _GNU_SOURCE
|
||||
|
||||
#include <pthread.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
@ -109,13 +108,12 @@ Done
|
|||
#define NAMELEN 16
|
||||
|
||||
#define errExitEN(en, msg) \\
|
||||
do { if(en) { errno = en; perror(msg); \\
|
||||
exit(EXIT_FAILURE);} \\
|
||||
do { errno = en; perror(msg); exit(EXIT_FAILURE); \\
|
||||
} while (0)
|
||||
|
||||
static void *threadfunc(void *parm)
|
||||
{
|
||||
sleep(5); // allow main program to set the thread name
|
||||
sleep(5); // allow main program to set the thread name
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -126,27 +124,33 @@ int main(int argc, char **argv)
|
|||
char thread_name[NAMELEN];
|
||||
|
||||
rc = pthread_create(&thread, NULL, threadfunc, NULL);
|
||||
errExitEN(rc, "pthread_create");
|
||||
if (rc != 0)
|
||||
errExitEN(rc, "pthread_create");
|
||||
|
||||
rc = pthread_getname_np(thread, thread_name, NAMELEN);
|
||||
errExitEN(rc, "pthread_getname_np");
|
||||
printf("Created a thread. Default name is: %s\\n", thread_name);
|
||||
if (rc != 0)
|
||||
errExitEN(rc, "pthread_getname_np");
|
||||
|
||||
printf("Created a thread. Default name is: %s\\n", thread_name);
|
||||
rc = pthread_setname_np(thread, (argc > 1) ? argv[1] : "THREADFOO");
|
||||
errExitEN(rc, "pthread_setname_np");
|
||||
if (rc != 0)
|
||||
errExitEN(rc, "pthread_setname_np");
|
||||
|
||||
sleep(2);
|
||||
|
||||
|
||||
rc = pthread_getname_np(thread, thread_name, NAMELEN);
|
||||
errExitEN(rc, "pthread_getname_np");
|
||||
if (rc != 0)
|
||||
errExitEN(rc, "pthread_getname_np");
|
||||
printf("The thread name after setting it is %s.\\n", thread_name);
|
||||
|
||||
|
||||
rc = pthread_join(thread, NULL);
|
||||
errExitEN(rc, "pthread_join");
|
||||
|
||||
if (rc != 0)
|
||||
errExitEN(rc, "pthread_join");
|
||||
|
||||
printf("Done\\n");
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
.fi
|
||||
.SH SEE ALSO
|
||||
.ad l
|
||||
|
|
Loading…
Reference in New Issue