Processos filho indesejados sendo criados durante a leitura do arquivo [duplicado]

Esta pergunta já tem uma resposta aqui:

Por que bifurcar meu processo faz com que o arquivo seja lido infinitamente 3 respostas

Estou criando um programa com vários processos. Quando tentei chamar fork () em um loop for usandoif(f == 0) break;. Eu obtive o número desejado de processos filho.

No entanto, agora, estou lidando com um arquivo de entrada e o número desejado de processos não é conhecido inicialmente. Aqui está o menor exemplo possível do meu código.

FILE* file = fopen("sample_input.txt", "r");
while(fscanf(file, "%d", &order) == 1){      
    f = fork();
    if(f == 0){
        break;
    } 
}

exemplosample_input.txt:

5 2 8 1 4 2

Agora, milhares de processos filhos estão sendo criados (quero 6, o número de números inteiros no arquivo), qual poderia ser o motivo? Tem algo a ver com o ponteiro do arquivo?

Editar: Eu fiz algumas depurações com saídas do console, os processos filhos estão realmente saindo do circuito. No entanto, os pais continuam lendo um pequeno arquivo repetidamente. Se eu removerfork(), o loop é executado 6 vezes como pretendido.

Edit2: Eu tenho uma teoria, não posso provar, talvez você possa me ajudar. Pode ser que o ponteiro do arquivo seja compartilhado entre os processos, quando um filho sai, fecha o arquivo e, quando o pai tenta ler novamente, ele começa do início (ou de algum outro comportamento estranho). Poderia ser o caso?