0nism

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

简单fork循环分析

分析下列代码

	/**********************************************************************

		> File Name: t_fork.c

		> Author: 0nism

		> Email: fd98shadow@sina.com

		> Created Time: Sun 14 Oct 2018 02:41:39 PM CST

	***********************************************************************/

	#include <unistd.h>
	#include <stdio.h>
	#include <stdlib.h>

	static int idata = 111;         //  Allocated in data segment

	int main(int argc, char **argv)
	{
		int istack = 222;           //  Allocated in stack segment
		pid_t childPid;

		int i = 0;

		for ( i=0; i<2; i++)
		{   
			switch (childPid = fork())
			{   
				case -1: 
							printf("err: fork\n");
							return 0;

				case 0:
							printf("child: ok\n");
							break;

				default:
							printf("parent: ok\n");
							break;
			}   

		} 
		
		exit(EXIT_SUCCESS);
	}	

在bash中输出为:

	MISlike@16:43:~/process $ ./t_fork              
	parent: ok
	parent: ok
	MISlike@16:43:~/process $ child: ok
	child: ok
	parent: ok
	child: ok

父进程1输出2次ok,循环2次创建子进程child0,child1。child0在fork时i=0,故也输出2次ok,i=1时,child0创建子进程child00。child1在fork时故输出1次ok。child00创建时i=1,输出1次ok。共计六次。循环次数为3时,也应该用类似手段分析。

分析
分析

posted on 2018-10-15 17:53  0nism  阅读(446)  评论(0编辑  收藏  举报