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个-号
相关文章推荐
- fork()子进程与父进程之间的文件描述符问题
- 实验 9-1 1. 实现以下功能 a) 调用 pipe()创建无名管道 b) 调用 fork 创建一个子进程 c) 在子进程中向管道内写入 128k 数据,打印出进程号及成功写入的字节数 d) 在父
- 问题:子进程父进程哪个先执行:【转】关于 fork 和父子进程的理解
- 问题:子进程父进程哪个先执行:【转】关于 fork 和父子进程的理解 + 【转】
- 关于连续使用fork()到底产生多少个子进程问题的实践
- fork()子进程与父进程之间的文件描述符问题 www.educity.cn/linux/1241859.html
- fork创建子进程(printf的打印次数问题)
- fork()子进程与父进程之间的文件描述符问题
- fork()子进程与父进程之间的文件描述符问题
- fork创建子进程(printf的打印次数问题)
- fork之后子进程复制父进程的内容究竟是什么?
- fork进程数的问题
- 使用multiprocesss模块进程通信采用队列方式,子进程run执行完一直不能退出的问题
- Prog2: hellowrold2.c 由进程0打印执行时间和命令行参数
- fork之后,子进程从父进程那继承了什么
- 20170724_父进程和子进程到底是如何执行的?
- fork之后父子进程虚拟地址(逻辑地址)相同的问题
- 二柱子问题扩充:1题目避免重复;2可定制(数量/打印方式);3 可以控制下列参数:是否有乘除法,是否有括号,数值范围,加减有无负数,除法有无余数,是否支持分数(真分数,假分数,...),是否支持小数,(精确到多少位),打印中每行的间隔可调整;
- 执行 java -jar xxx.jar 是不是创建进程问题
- 进程并发执行问题