【问题标题】:Why only the parent process takes input?为什么只有父进程接受输入?
【发布时间】:2019-02-19 16:57:17
【问题描述】:

我创建了一个分叉并要求输入的程序:

void main() {
  int a;
  fork();
  fork();
  printf("Enter: ");
  scanf("%d", &a);
  printf("%d received %d\n", getpid(), a);
}

我运行它并输入一个数字:

$ ./mytest
Enter: Enter: Enter: Enter: 42
15317 received 42
$

为什么看起来只有原始父进程才能获得数字?为什么不是输出,例如:

$ ./mytest
Enter: Enter: Enter: Enter: 42
15317 received 42
15318 received 42
15319 received 42
15320 received 42
$

【问题讨论】:

    标签: linux operating-system


    【解决方案1】:

    所有进程都接受输入。问题是一次只有一个人可以这样做。在任何给定时间哪个进程获取输入是不可预测的。

    【讨论】: