源代碼:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main(int argc,char*argv[])
{
int num=1;
int pid;
pid=fork();
if(pid<0)
{
printf("fork error!\n");
return 0;
}else if(pid==0)
{
printf("this is child,pid:%d,num:%d\n",getpid(),++num);
exit(0);
}else
sleep(2);
printf("this is parent,pid:%d,num:%d\n",getpid(),num);
}
return 0;
}
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int num = 1;
int pid;
pid = vfork();
if(pid <0 )
{
return 0;
}else if(pid == 0)
{
printf("this is child,pid:%d,num:%d\n",getpid(),++num);
_exit(0);
}else
{
printf("this is parent, pid:%d, num:%d\n",getpid(), num);
}
return 0;
}
解析
在vfork內++後,父進程的相應變量也會++
而在fork內++後,fork內的變量會++,但是父進程中的變量不變。
fork------參考:點擊打開鏈接
https://blog.csdn.net/qq_37192076/article/details/80391337