- #include <unistd.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <pthread.h>
- void *start(void *arg);
- int main(){
-
- pthread_t tpid;
- int i = 1;
- void *ret;
- char buf[128];
-
-
- getcwd(buf, 128);
- printf("the current workdirectory is %s\n", buf);
- if(pthread_create(&tpid, NULL, start, (void *)&i) < 0){//此处使用了地址,若改为(void *)i,则最后的结果显示i还是1,没有改变
- perror(NULL);
- exit(1);
- }
- pthread_join(tpid, &ret);
-
- printf("the exit code is %d\n",(int)ret);
- printf("after pthread the i is %d\n", i);
-
- getcwd(buf, 128);
- printf("the current workdirectory is %s\n", buf);
-
- return 0;
- }
- void *start(void *arg){
-
- printf("arg = %d\n",*(int *)arg);
- *(int*)arg = *(int*)arg + 1;
- chdir("/home/yyp/Desktop");//此处改变目录,主线程的工作目录也会改变
- pthread_exit(*(int *)arg);
- }
进程的所有信息对进程所有的线程都是共享的,包括可执行的程序文本、程序的全局内存和堆内存、栈、以及文件描述符。
同时线程还包含,线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字(但是处理函数是共用的)、errno变量和私有数据。
阅读(1065) | 评论(0) | 转发(0) |