之间的资源争夺以下是我的测试代码:如何看父进程和子进程
#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);
}
三个过程将内容传递给printf到标准输出,但我每次运行的时间代码,事实证明,三个进程一个一个地运行,我看不到我期望的输出。我知道这是因为CPU速度太快,几乎不可能看到我期望的输出。所以我写了另一个程序这是一个死循环,就像这样: while(1){ i ++; } 使CPU使用率高,但我仍然看不到我期望的输出。 我能做什么?
你可以发布输出..? – akp
@akp,输出如下:100行aaaaaaaaaa \ n,然后遵循100 bbbbbbbbbb \ n,然后遵循100 cccccccccc \ n。我期望的输出是三个部分相互混合。可能是这样的: 60行aaaaaaaaaa \ n,100行bbbbbbbbbb \ n,50行cccccccccc \ n,40行aaaaaaaaaa \ n,50行cccccccccc \ n。但CPU看起来太快了,我看不到这样的输出 – haipeng31
ur代码工作正常,它在我的系统上产生随机输出...我认为这只是由于fst CPU ... – akp