#include<stdio.h> #include<stdlib.h> #include <unistd.h> #include<sys/wait.h> #include<sys/types.h> int main () { pid_t pida,pidb,pidc,pidd; while((pidb=fork())==-1); if(pidb>0) { wait(0); printf("Apid=%d,ppid=%d\n",getpid(),getppid()); } else //p { while((pidc=fork())==-1); if(pidc>0) { wait(0); printf("Bpid=%d,pidd=%d\n",getpid(),getppid()); } else //p { while((pidd=fork())==-1); if(pidd >0) //p2 { wait(0); printf("Cpid=%d,pidd=%d\n",getpid(),getppid()); } else //p { printf("Dpid=%d,pidd=%d\n",getpid(),getppid()); } } } }
时间: 2024-02-07 07:02:52 浏览: 48
#include<stdio.h>
这是一个使用了fork()函数的进程创建程序,它会创建4个进程(A、B、C、D)。下面是程序的大致流程:
1. 主进程先创建一个子进程B(pidb=fork()),如果失败则一直循环直到成功为止。
2. 如果是父进程,等待子进程B结束(wait(0)),然后输出A进程的pid和ppid。
3. 如果是子进程B,创建一个子进程C,如果失败则一直循环直到成功为止。
4. 如果是父进程B,等待子进程C结束(wait(0)),然后输出B进程的pid和ppid。
5. 如果是子进程C,创建一个子进程D,如果失败则一直循环直到成功为止。
6. 如果是父进程C,等待子进程D结束(wait(0)),然后输出C进程的pid和ppid。
7. 如果是子进程D,直接输出D进程的pid和ppid。
8. 程序结束。
总体来说,这个程序的输出结果是不确定的,因为进程的调度是由操作系统决定的,不同的操作系统或者不同的时刻都可能会产生不同的输出结果。
阅读全文