您的位置:首页 > 其它

fork()子进程与父进程执行打印多少个-号问题

2017-09-21 11:47 260 查看
//原题是求下列程序会打印多少个-号:

#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
int fpid;
for(int i=0;i<2;i++){
printf("- %d\n",i);
printf("%d %d %d\n",getppid(),getpid(),fpid);
fpid=fork();
printf("- %d\n",i);
printf("%d %d %d\n",getppid(),getpid(),fpid);

}
return 0;
}

执行结果:

admindeiMac-2:~ yidan.huang$ ./fork

- 0

532 878 244920374

- 0

532 878 879

- 1

532 878 879

- 1

532 878 880 //由于不同的操作系统的调度策略,此时先父进程执行完,父进程创建了两个子进程879、880

- 0

878 879 0   //仅继承并执行fork()后的代码,继续打印i=0

- 1

878 879 0

- 1

1 879 881 //这是父进程创建的第一个子进程879执行完,子进程中只fork()一次(在i=1时),创建了子子进程881

- 1

1 880 0  // 由于父进程执行完退出了,子进程880变成孤儿进程由pid=1的init领养

- 1

1 881 0  //由子进程879执行完退出了,子子进程881变孤儿进程由pid=1领养

总共输出9个-号
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐