#include<pthread.h>
#include<stdio.h>
int value=0;
void *runner(void *param);
int main(int argc,char *argv[])
{
int pid;
pthread_t tid;
pthread_attr_t attr;
pid=fork();
if(pid==0){
pthread_attr_init(&attr);
pthread_create(&tid,&attr,runner,NULL);
pthread_join(tid,NULL);
printf("CHILD VALUE=%d",value);
}
else if(pid>0){
wait(NULL);
printf("PARENT VALUE=%d",value);
}
}
void *runner(void *param){
value=5;
pthread_exit(0);
}
孩子和父母的价值是多少? 孩子和它创建的线程会共享数据吗?所以输出将是5和0?
答案 0 :(得分:1)
孩子和它创建的线程会共享数据吗?
没有。如果父母的记忆,子进程可以被认为是副本。因此,父母无法看到孩子所做的任何更改。
所以输出将是5和0?
是:儿童打印5,父打印0(不一定按此顺序)。
答案 1 :(得分:1)
这是怎么回事:
因此,由于子项生成的线程中指定的值只能在子进程内部显示,而不能在父进程内部显示,因此结果为5和0.