Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuál es el principio del uso de fork() en la programación UNIX?

¿Cuál es el principio del uso de fork() en la programación UNIX?

#includelt;unistd.hgt;

#includelt;sys/types.hgt;

Definición de función:

pid_t?fork (?void);

(pid_t? es una definición de macro, su esencia es int?. Está definida en lt;sys/types.hgt;)

Valor de retorno: ? Si una llamada exitosa devolverá dos valores, el proceso hijo devuelve 0 y el proceso padre devuelve el ID del proceso hijo; de lo contrario, se produce un error -1

Descripción de la función:

An; El proceso existente puede llamar a la función fork para crear un nuevo proceso. El nuevo proceso creado por fork se llama proceso hijo. La función fork se llama una vez pero regresa dos veces. La única diferencia entre las dos devoluciones es que el proceso hijo devuelve un valor de 0 y el proceso padre devuelve el ID del proceso hijo.

El proceso hijo es una copia del proceso padre. Obtendrá una copia del espacio de datos, el montón, la pila y otros recursos del proceso padre. Tenga en cuenta que el proceso hijo contiene una "copia" del espacio de almacenamiento anterior, lo que significa que estos espacios de almacenamiento no se comparten entre los procesos padre e hijo.

Linux copiará el contenido del espacio de direcciones del proceso padre al proceso hijo. Por lo tanto, el proceso hijo tiene un espacio de direcciones independiente.

¿Por qué la bifurcación regresa dos veces?

Dado que el segmento de pila del proceso padre se copia durante la copia, ambos procesos permanecen en la función fork, esperando regresar. Debido a que la función fork regresa dos veces, una en el proceso padre y otra en el proceso hijo, los valores de retorno de estos dos tiempos son diferentes. El proceso es como se muestra a continuación

Después de llamar a fork, hay dos copias del código, las cuales se devuelven desde la función fork. Las flechas indican sus respectivas ubicaciones de ejecución.