您的程序完全错误。您 永远fork
不应 忽略的结果 。
阅读Advanced
Linux编程书和fork(2)手册页(请仔细阅读该页面几次)。
典型代码应为:
pid_t pid1 = fork(); if (pid1<0) { perror("fork1 failed"); exit(EXIT_FAILURE); } else if (pid1 == 0) { // you are in the child process } else // pid1>0 { // you are in the parent process }并且同样for
pid_t pid2=fork();和then for
pid_tpid3=fork();等等。因此,每个对的调用
fork都应处理3种结果的情况
fork(失败,即
<0子进程
==0,父进程
>0)
原则上您有3 3即27种可能性。但是您可以尽早处理失败案例,剩下2 3即8。
不要忘记处理的失败
fork。你可能会降低你的进程限制(使用了setrlimit(2)使用
RLIMIT_NPROC或等值的ulimit
bash的内置),以缓解测试
fork失败。



