所谓进程链就是父进程创建一个子进程,创建的子进程再次创建出属于自己的子进程,这样依次往下循环,如下图所示。
所谓的进程扇就是一个父进程创建出多个子进程,如下图所示。
代码:
创建进程扇:
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #define n 5 //创建进程扇 int main() { for (int i = 0; i < n; i++) { pid_t fork_ret = fork(); if (fork_ret == -1) { perror("fork"); exit(-1); } else if (fork_ret == 0) //判断是不是子进程 { printf("子进程[%d], %ld\n", i, (long)getpid()); exit(0); } wait(NULL); } printf("父进程的id:%ld\n", (long)getppid()); sleep(1); }
功能实现:
创建进程链:
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #define n 5 //创建进程链 int main() { for (int i = 0; i < n; i++) { pid_t fork_ret = fork(); if (fork_ret == -1) { perror("fork"); exit(-1); } else if (fork_ret > 0) //判断是不是父进程 { printf("父进程id:%ld\n", (long)getppid()); exit(0); } } printf("子进程的id:%ld",(long)getpid()); sleep(1); }
功能实现: