为什么只有父进程接受输入?

时间:2019-02-19 16:57:18

标签: linux operating-system

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

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
$

1 个答案:

答案 0 :(得分:2)

所有进程都接受输入。问题在于,一次只能做到这一点。在任何给定时间获取输入的过程是不可预测的。