linux c 使用vfork时产生的疑问

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int globvar=5;

int main(){
  pid_t pid;

 int var=1, i;
  printf("fork is diff with vfork\n");
 // pid=fork();
  pid=vfork();
  switch(pid){
  case 0:
    i=3;    
    while(i-->0){
     printf("child process is running\n");
     globvar++;
     var++;
     sleep(1);
    }
    printf("child's globvar=%d,var=%d\n",globvar,var);
   break;
  
  default:
    i=5;
    while(i-->0){
     printf("parent process is running\n");
     globvar++;
     var++;
     sleep(1);
    }
    printf("parent's globvar=%d,var=%d\n",globvar,var);


    exit(0);
  case -1:
    printf("process creation failed\n");
    exit(0);



}
 return 0;
}

运行结果为:

fork is diff with vfork
child process is running
child process is running
child process is running
child's globvar=8,var=4
parent process is running
parent process is running
parent process is running
parent process is running
parent process is running
parent's globvar=13,var=-1216646167


问题来了,为什么var值不是9????














转载于:https://my.oschina.net/u/1401580/blog/337137

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值