gpt4 book ai didi

c++ - fork() 到底发生了什么?

转载 作者:太空狗 更新时间:2023-10-29 20:00:01 27 4
gpt4 key购买 nike

int main(){

char ch;

fork();

cin >> c;
}

调用 fork() 后,我应该有 2 个进程运行相同的代码。为什么在运行这个简单的例子后,我要么被要求只输入一次字符,要么被要求输入两次?每次我运行这个程序时,系统不应该期待 2 个输入吗?

>./a.out 
a
>./a.out
a
b
>

最佳答案

您有两个进程同时从终端读取数据。任何人都可以猜测哪个进程获得了输入。

  • 如果父进程首先获得输入,它会退出并将控制权返回给 shell。 (请注意,这实际上会导致相同情况的重复,shell 和子进程争夺输入。)
  • 如果子进程先得到输入,它会退出,但直到父进程退出时,控制权才会返回到 shell。

如果您有两个进程从同一个终端读取,您不应该期待一致的行为。

关于c++ - fork() 到底发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9378959/

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