#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <stdlib.h> int main(int argc, char *argv[]){ pid_t pid; pid = fork(); while(1){ if (pid == -1) { perror("fork error"); exit(1); } else if (pid == 0) { printf("child process processID %d pid value %d\n",getpid(),pid); sleep(1); } else { printf("father process processID %d pid value %d\n",getpid(),pid); sleep(1); } } return 0; }
程序功能:创建进程,并反复输出当前进程ID与对应创建的子进程ID。如果当前进程没有子进程,则子进程ID为0.
运行结果(程序输出):如图所示。父进程ID为2787,创建了子进程ID为2788。子进程2788没有创建新的子进程
运行结果(进程树):该段程序命名为a.out。打开多个新的控制台窗口分别运行该程序,并创建一个新的控制台窗口输出进程树,可以看到进程树的一部分:2770创建了2772子进程,2774创建了2776子进程等。