Red de conocimiento informático - Problemas con los teléfonos móviles - Los expertos en programación de UNIX C pueden ayudarme a descubrir cómo este programa de UNIX C terminó en un bucle infinito.

Los expertos en programación de UNIX C pueden ayudarme a descubrir cómo este programa de UNIX C terminó en un bucle infinito.

Cuando bifurcas () un proceso hijo, el proceso hijo abrirá una nueva unidad de memoria. Copia todos los recursos del proceso padre. El proceso padre lo ejecuta primero, imprime padre: aaaaa. luego sale del bucle. El proceso hijo generado por la bifurcación ejecutará child: 100. Dado que el proceso hijo no sale del bucle, el proceso hijo se bifurcará para generar un proceso nieto. Luego, el proceso hijo se convierte en el proceso padre. del proceso nieto también imprime padre: aaaaa y luego salta del ciclo. El proceso nieto ejecutará hijo: 100. Repita esto y el proceso nieto generará un proceso bisnieto... (los descendientes lo harán). colapsar sin fin!) Si modifica su código, este problema no ocurrirá, de la siguiente manera:

#includelt;unistd.hgt;

#includelt;stdio.hgt;

#includelt;stdlib.hgt;

int? main()

{

int?b=100;

char?c[10]="aaaaa";

mientras (1)

{

printf("comenzar...\n");

dormir(1);

if(fork()==0)

{

printf("child: d\n", b);

getchar();

exit(0);

}¿más?

{

printf("padre: s\n" , c);

dormir(1);

descanso

}

}

return? 0;

}

Los resultados de ejecución modificados son como se muestran en la captura de pantalla: