我创建了一个分叉并要求输入的程序:
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
$
答案 0 :(得分:2)
所有进程都接受输入。问题在于,一次只能做到这一点。在任何给定时间获取输入的过程是不可预测的。