fork+for循环
来源:互联网 发布:淘宝移动wi fi 编辑:程序博客网 时间:2024/05/16 01:56
fork_for.c
#include <sys/types.h>#include <unistd.h>#include <stdio.h>int main(){pid_t pid;printf("before fork --> pid=%d ppid=%d\n\n",getpid(),getppid());for(int i=1;i<=2;i++){if((pid=fork())<0){printf("fork error\n");return(-1);}else if(pid==0)printf("child process-%d pid=%d ppid=%d pid=%d\n\n",i,getpid(),getppid(),pid);else{printf("parent process-%d pid=%d ppid=%d pid=%d\n\n",i,getpid(),getppid(),pid);}sleep(1);//无论执行一次父/子进程,都等待1s,保证循环依次执行,而不是乱序}return 0;}
循环第一次(i=1):父/子进程各执行一次(先执行了父进程),进程关系为3200 <-- 4045(父进程) <-- 4046(子进程1)
循环第二次(i=2):
parent process-2 pid=4046 ppid=4045 pid=4047 ---> 子进程1作为父进程,fork出子进程的子进程=4047(返回pid=4047)
parent process-2 pid=4045 ppid=3200 pid=4048 ---> 父进程作为父进程,fork出父进程的子进程2=4048(返回pid=4048)
child process-2 pid=4047 ppid=4046 pid=0 ---> 4047,作为子进程的子进程
child process-2 pid=4048 ppid=4045 pid=0 ---> 4048,作为父进程的子进程2
即:此两次循环的fork,实际fork出包含父进程之内有四个进程。
进程关系为3200 <-- 4045(父进程) <-- 4046(子进程1) <-- 4047(子进程的子进程)
<-- 4048(子进程2)
阅读全文
0 0
- fork+for循环
- fork循环
- fork循环
- 当for循环,fork(),printf()相遇时的思考
- LINUX 循环fork()
- LINUX 循环fork()
- python os.fork() 循环输出
- 慎用skynet.fork做循环
- for循环
- For循环
- for循环
- for 循环
- for循环
- for循环
- for循环
- for循环
- for 循环.
- for 循环
- iptables 如何防止 syn ddos ping 攻击
- MySQL索引类型 btree索引和hash索引的区别
- Java并发编程:volatile关键字解析
- C#实现总览宿舍状态(满员与否)
- 大型高并发高负载web应用系统架构-数据库架构策略
- fork+for循环
- 写给大家看的设计书学习笔记
- 【实践】基于Ceph打造高性能高可靠的分布式块存储系统
- 再探Direct3D流水线
- 支付宝小程序灰度测试、版本回滚能力新上线
- Linux实用命令大全
- tcp/ip协议栈--socket API 之listen()
- HDU
- Netty 实现HTTP文件服务器