- 论坛徽章:
- 0
|
#include <sys/types.h>
#include<stdio.h>
int glob=6;
char buf[]="a write to stdout\n";
main(void)
{
int var;
pid_t pid;
var=88;
char SS[1024];
if(write(SS,buf,sizeof(buf)-1)!=sizeof(buf)-1)
printf("write error");
printf("before fork\n");
if((pid=fork())<0)
printf("fork error");
else if(pid==0)
{
glob++;
var++;
}
else
sleep(2);
printf("pid=%d,glob=%d,var=%d\n",getpid(),glob,var);
exit(0);
}
一次执行:
write errorbefore fork
pid=11982,glob=7,var=89
pid=11981,glob=6,var=88
二次执行:
write errorbefore fork
pid=11991,glob=7,var=89
pid=11990,glob=6,var=88
为什么两次的pid结果不同?帮帮忙谢谢! |
|