linux:通过fork()创建子进程
系统调用fork()后,俩个进程将执行相同的程序段,但是拥有各自不同的堆段,栈段,数据段,每个子程序都可修改各自的数据段,堆段,和栈段
1.通过调用fork()后,产生了两个不同的pid值
#include <stdio.h>
#include <unistd.h>
int count1=0;
int main(void)
{
int pid;
int count2=0;
count1++;
count2++;
printf("count1=%d,count2=%d\n",count1,count2);
pid=fork();
count1++;
count2++;
printf("count1=%d,count2=%d\n",count1,count2);
printf("pid=%d\n",pid);
return 0;
}
2.调用fork()后,错误返回-1,子进程返回0,父进程返回子进程的pid值
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
int ret = fork();
if(ret < 0){
perror("fork");
return 1;
}
else if(ret == 0){ //child
printf("I am child : %d!, ret: %d\n", getpid(), ret);
}else{ //father
printf("I am father : %d!, ret: %d\n", getpid(), ret);
}
sleep(1);
return 0;
}