fork函数被调用一次,返回两次,一次父进程返回子进程ID,一次子进程返回0.
由已知条件,fork预期进程数
#include <unistd.h>
#include <stdio.h>
int main(void)
{
int i = 0;
printf("i son/pa ppid pid fpid\n");
//ppid指当前进程的父进程pid
//pid指当前进程的pid,
//fpid指fork返回给当前进程的值
pid_t fpid;
for(i = 0; i < 3; i++)
{
fpid = fork();
if(fpid <= (pid_t) 0)
{
/* child process or error*/
sleep(1); /* make childs faster */
break;
}
}
if(fpid == 0)
printf("%d child %4d %4d %4d\n", i, getppid(), getpid(), fpid);
else
printf("%d parent %4d %4d %4d\n", i, getppid(), getpid(), fpid);
return 0;
}