关于fork()函数

来源:百度知道 编辑:UC知道 时间:2024/07/02 16:48:24
关于子进程的程序,假设每个函数调用都成功。
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
void main( void )
{
fork( ); printf("How\n");
fork( ); printf("are\n");
fork( ); printf("you\n");
}
此程序运行结束后, How、are、you各输出多少个?输出次序是否唯一?为什么?

急,在线等,麻烦给出运行过程。

按道理,程序在运行时会分出其他的七个进程,一共八个进程。
也就是说how最多执行2次
are最多执行4次
you最多执行8次
每次不能保证都执行,
也不能确定执行的顺序。
因为八个进程是相互独立的。
运行下面的代码,即将会看得更清楚:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main( void )
{
pid_t pid1=-1,pid2=-1,pid3=-1;
pid1=fork( );
{
if(pid1<0) printf("error(how)\n");
else if(pid1==0) printf("how(child)(%d*%d*%d)\n",pid1,pid2,pid3);
else printf("how(parent)(%d*%d*%d)\n",pid1,pid2,pid3);
}

pid2=fork( );
{
if(pid2<0) printf("error(are)\n");
else if(pid2==0) printf("ara(child)(%d*%d*%d)\n",pid1,pid2,pid3);
else printf("ara(parent)(%d*%d*%d)\n",pid1,pid2,pid3);

}

pid3=fork( );
{
if(pid3<0) printf("error(you)\n");
else if(pid3==0) printf(&qu