pthread_exit&&pthread_join函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pthread_exit&&pthread_join函数相关的知识,希望对你有一定的参考价值。

 1 #include <pthread.h>
 2 #include <unistd.h>
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 #include <string.h>
 6 #include <error.h>
 7 
 8 void *thr_fn1(void *arg)
 9 {
10     printf("thread 1 returning\n");
11     return((void *)1);
12 }
13 
14 
15 void *thr_fn2(void *arg)
16 {
17     printf("thread 2 exiting\n");
18     pthread_exit((void *)2);
19 }
20 
21 int main(void)
22 {
23     int err;
24     pthread_t tid1,tid2;
25     void *tret;
26     
27     err=pthread_create(&tid1,NULL,thr_fn1,NULL);//创建线程1
28     if(err!=0)
29         fprintf(stderr, "errno: %s", strerror(err));//创建线程2
30     err=pthread_create(&tid2,NULL,thr_fn2,NULL);
31     if(err!=0)
32         fprintf(stderr, "errno: %s", strerror(err));
33     err=pthread_join(tid1,&tret);//接收线程1的返回值
34     if(err!=0)
35         fprintf(stderr, "errno: %s", strerror(err));
36     printf("thread 1 exit code %d\n",(int)tret);
37     
38     err=pthread_join(tid2,&tret);//接收线程2的返回值
39     if(err!=0)
40         fprintf(stderr, "errno: %s", strerror(err));    
41     printf("thread 2 exit code %d\n",(int)tret);
42     exit(0);
43 }

程序编译及运行:

1 gcc -o pthread pthread.c -lpthread
2 thread 2 exiting
3 thread 1 returning
4 thread 1 exit code 1
5 thread 2 exit code 2

以上是关于pthread_exit&&pthread_join函数的主要内容,如果未能解决你的问题,请参考以下文章

内网渗透学习域横向移动——PTH&PTK&PTT

内网渗透-横向移动(smb&wmi)

关于 pthread_exit 释放自动变量的困惑

信号处理程序中的 pthread_exit()

线程函数中,假如没有用pthread_exit会怎样?

pthread_exit在main线程中的用处