for循环中的fork()执行

Lea*_*nne 1 c linux fork

int main(int argc, char** argv) {
    int i = 0;
    while (i < 2) {
        fork();
        system("ps -o pid,ppid,comm,stat");
        i++;
     }
     return (EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我ps命令执行了多少次?

Era*_*man 6

我相信答案是6.

在第一次迭代中,fork()调用,将进程拆分为2,从而调用ps两次.

在第二次迭代中,在每个进程中再次调用fork,因此现在有4个进程运行ps.

对ps的总调用:2 + 4 = 6.