fork函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
#include <unistd.h>
int main()
{
pid_t fpid;
fpid = fork();
if( fpid == 0 )
printf("create child fpid return = %d\n" , fpid);
else
printf("father fpid return = %d\n" , fpid);
while(1);
return 0;
}
运行结果如下:
可以看出,子进程ID为7187,父进程ID为7186。
规律:
1.在父进程中,fork返回新创建子进程的进程ID;
2.在子进程中,fork返回0;
3.如果出现错误,fork返回一个负值;
进阶实验:
#include <unistd.h>
int main()
{
int i;
for(i=0;i<3;i++)
{
fork();
printf("*\n");
}
return 0;
}
猜想该程序输出几个*
答案是14个