To the pursuit of truth.
前面的文章我们讨论了系统函数 fork() 的应用,他可以在一个进程中再创建另外一个子进程,本文测试使用一个 for 循环创建多个子进程,中间一些注意事项已经全部用注释标注清楚。
123456789101112131415161718192021222324252627282930
#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(int argc, char* argv[]){ pid_t pid; int i; for (i = 0; i < 5; i++) { pid = fork(); if (pid == 0) // 当判断返回值是子进程时跳出for循环 break; } // 如果是子进程跳出循环,那么i一定小于5 if (i < 5) { printf("child : I'm %dth child, PID = %d ParentID = %d\n", i + 1, getpid(), getppid()); } // 如果 i == 5 那证明整个循环都走完了,最终是父进程执行 else if (i == 5) { // wait 1秒,等待所有子进程创建完毕 sleep(1); printf("parent: I'm parent, PID = %d\n", getpid()); } return 0;}