int pid;
pid=fork();
fork可以根据返回值来判断此时是父进程还是子进程,以及是否出错
一个返回值,但是返回两次,通过创造一个子进程来实现并发
一个父进程,一个子进程,两者顺序由内核中的调度算法决定
if(pid==-1){ //出错
}
else if(pid==0){ //此时是父进程
}
else{ //此时是子进程其实是子进程ID
}
子进程从父进程中继承整个进程的地址空间
但是两者是独立的,例如
int a = 3;
int pid;
pid = fork();
if (pid < 0) {
}
else if (pid == 0) { //子进程
a++;
printf("this is son %d %d\n",getpid(),a);
}
else {
a++;
printf("this is father %d %d\n", getpid(), a);
}
return 0;
输出的是
this is father 14069 4
this is son 14070 4