以下是我的测试代码:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
pid_t pid;
/* create first child process */
pid = fork();
if (pid < 0) {
perror("fork error");
exit(1);
}
if (pid > 0) { // parent process
pid = fork();
if (pid < 0) {
perror("fork error");
exit(1);
}
if (pid > 0) { // parent process
for (int i = 0; i < 100; i++) {
printf("aaaaaaaaaaa\n");
}
} else { // second child process
for (int i = 0; i < 100; i++) {
printf("cccccccccc\n");
}
}
} else { // first child process
for (int i = 0; i < 100; i++) {
printf("bbbbbbbbbb\n");
}
}
exit(0);
}
这三个进程将内容打印到标准输出,但是每次我运行代码时,事实证明这三个进程一个接一个地运行,我看不到我期望的输出。我知道这是因为 cpu 太快了,几乎不可能看到我期望的输出。所以我编写了另一个死循环程序,就像这样:while (1) { i++; } 使 cpu 使用率高,但我仍然看不到我期望的输出。我能做些什么?