gpt4 book ai didi

c - 创建子进程时出现此输出的原因是什么?

转载 作者:行者123 更新时间:2023-11-30 14:37:59 27 4
gpt4 key购买 nike

就像标题所说,为什么我在创建子进程时会得到这个输出?具体来说,为什么突然之间,子打印或父打印语句有时会比另一个打印得更快?

CHILD 0
PARENT 14
PARENT 15
CHILD 1
PARENT 16
CHILD 2
PARENT 17
.
.
.
CHILD 191
CHILD 192
CHILD 193
CHILD 194
CHILD 195
CHILD 196
CHILD 197
CHILD 198
CHILD 199
CHILD 200
CHILD 201
CHILD 202
CHILD 203
CHILD 204
CHILD 205
CHILD 206
PARENT 206
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid; /* could be int */
int i;
pid = fork();

if( pid > 0 )
{
/* parent */
for( i=0; i < 1000; i++ )
printf("\t\t\tPARENT %d\n", i);
}
else
{
/* child */
for( i=0; i < 1000; i++ )
printf("CHILD %d\n", i);
}
return (0);
}



最佳答案

正如我在 comment 中指出的那样:

交错输出是您正在运行的系统内核中的调度算法与其他正在运行的内容相结合的结果。这两个进程可以同时运行,并且在大多数具有多核的现代机器上,实际上是同时运行的。任一进程的输出何时出现在屏幕上取决于您无法控制的因素。对于每个进程,其自己的输出将按顺序出现(因此 CHILD 0 出现在 CHILD 1 之前,PARENT 0 出现在 PARENT 之前1 等),但是当任一进程的输出相对于另一个进程出现时大多是不确定的。

关于c - 创建子进程时出现此输出的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56918067/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com