fork派生进程

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

*/


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值