赞
踩
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
- */

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。