fork派生进程
#include <unistd.h>
#include <stdio.h>
int main(void)
{
int i=0;
printf("---------------------------\n");
//ppid指当前进程的父进程pid
//pid指当前进程的pid,
//fpid指fork返回给当前进程的值
for(i=0;i<2;i++)
{
pid_t fpid=fork();
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;
}
/*
root@liujie-desktop:/software# ./fork1 执行结果顺序可能变化
---------------------------
0 parent 2911 2970 2971 // 2911-> 2970(当前进程)-> 2971(被创建的子进程) -----------------a
0 child 2970 2971 0 // 2970-> 2971(当前进程)-> 0 (fork子进程返回的值) -----------------b
1 parent 2970 2971 2972 // 2970-> 2971(当前进程)-> 2972 (被创建的子进程)对b重新输出了一次,所以当前进程和父进程一样)----c
1 child 1 2972 0 // 1(执行完第二个循环后, main函数就该退出了,也即进程该死亡了,因为它已经做完所有事情了 ,置为1)
-> 2972(当前进程)-> 0 (fork子进程返回的值)--------d
1 parent 2911 2970 2973 // 2911-> 2970(当前进程)对a重新输出了一次,所以当前进程和父进程一样-> 2973(被创建的子进程)-------e
1 child 2970 2973 0 // 是e的fork
*/