I created a program that forks and asks for input:
void main() {
int a;
fork();
fork();
printf("Enter: ");
scanf("%d", &a);
printf("%d received %dn", getpid(), a);
}
I run it and enter one number:
$ ./mytest Enter: Enter: Enter: Enter: 42 15317 received 42 $
Why does it appear that only the original parent process gets a number? Why isn’t the output instead e.g.:
$ ./mytest Enter: Enter: Enter: Enter: 42 15317 received 42 15318 received 42 15319 received 42 15320 received 42 $
Advertisement
Answer
All of the processes accept input. The problem is that only one can do so at a time. Which process is getting the input at any given time is unpredictable.