fork函数

fork :进程创建

fork函数的特点:
     fork函数调用一次,返回两次。在父进程中返回子进程的pid(非0值),在子进程中返回0.
     子进程从fork之后的代码父子进程都会执行。只有子进程执行的代码,必须放到if(n==0)块中,父进程执行的放到else中。
     fork生成的子进程后,子进程与父进程谁先运行是不确定的。fork函数执行完成,则子进程和父进程都是独立运行的。

     fork之后,采用写时拷贝技术:fork之后父子进程共享所有的数据段代码段,代码段,但是内核会将这些空间设为只读的,如果父子进程任意一个程序试图修改数据,则会将修改的数据所在的那一页拷贝一份。

int main()
{
	if(fork()||fork())
	{
		printf("A\n");
	}
	else
	{
		printf("B\n");
	}
}

fork函数
输出2个A一个B


int main()
{
	int i=0;
	for(;i<2;i++)
	{
		if(fork()==0)
		{
			printf("A\n");
		}
		else
		{
			printf("B\n");
		}
	}
}

fork函数
输出3个A3个B


int main()
{
	int i=0;
	for(;i<2;i++)
	{
		if(fork()==0)
		{
			printf("A");
		}
		else
		{
			printf("B");
		}
	}
}

fork函数
输出4个A4个B