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");
}
}
输出2个A一个B
int main()
{
int i=0;
for(;i<2;i++)
{
if(fork()==0)
{
printf("A\n");
}
else
{
printf("B\n");
}
}
}
输出3个A3个B
int main()
{
int i=0;
for(;i<2;i++)
{
if(fork()==0)
{
printf("A");
}
else
{
printf("B");
}
}
}
输出4个A4个B