【发布时间】:2021-12-12 05:40:37
【问题描述】:
我无法弄清楚为什么以下代码没有产生我期望的结果:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char** argv) {
int n1 = fork();
if (n1 == 0) {
int n2 = fork();
int n3 = fork();
int n4 = fork();
} else if (n1 > 0) {
int n5 = fork();
}
printf("%d with parent %d\n", getpid(), getppid());
}
我希望这可以一次打印所有内容。但是,它会打印第一个进程,然后在程序的新运行中打印其余的进程。它还会输出错误的父 PID,并且不会终止。
【问题讨论】:
-
执行
./main时pgrep main的输出是什么 -
@LinuxGeek 2503 4572 5973
标签: linux ubuntu terminal fork