Procesos secundarios no deseados que se crean mientras se lee el archivo [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Por qué bifurcar mi proceso hace que el archivo se lea infinitamente 3 respuestas

Estoy creando un programa multiproceso. Cuando intenté llamar a fork () en un bucle for usandoif(f == 0) break;. Obtuve el número deseado de procesos secundarios.

Sin embargo, ahora estoy tratando con un archivo de entrada, y la cantidad deseada de procesos no se conoce inicialmente. Aquí está el ejemplo más pequeño posible de mi código.

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

ejemplosample_input.txt:

5 2 8 1 4 2

Ahora se están creando miles de procesos secundarios (quiero 6, el número de enteros en el archivo), ¿cuál podría ser la razón? ¿Tiene algo que ver con el puntero de archivo?

Editar Hice un poco de depuración con las salidas de la consola, los procesos secundarios de hecho están saliendo del ciclo. Sin embargo, el padre sigue leyendo un archivo pequeño una y otra vez. Si eliminofork(), el bucle se ejecuta 6 veces según lo previsto.

Edit2: Tengo una teoría, no puedo demostrarlo, tal vez puedas ayudarme. Podría ser la situación en la que el puntero del archivo se comparte entre procesos, cuando un niño sale, cierra el archivo y cuando el padre intenta leer de nuevo, solo comienza desde el principio (o algún otro comportamiento extraño). ¿Podría ser el caso?

Respuestas a la pregunta(2)

Su respuesta a la pregunta