当程序从fork ./a.out < inputFile
这样的文件读取输入后,所有输入被打印两次输出,就像exit(0)
的子项中没有fork
一样。我的期望是一切都只打印一次,因为程序只在父母而不是孩子打印。为什么会这样?
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <wait.h>
int main() {
char currentChar;
int counter = 0;
while (scanf("%c", ¤tChar) != EOF) {
printf("%c", currentChar);
fflush(stdout);
counter++;
if (counter == 10) {
// all characters after 10 characters are printed twice
int pid = fork();
if (pid == 0) {
// child;
exit(0);
} else {
// parent;
int status;
waitpid(pid, &status, 0);
}
}
}
return 0;
}