Pero los procesos de niños y principales residen en diferentes espacios de memoria. Estos espacios de memoria tienen el mismo contenido y cualquier operación realizada por un proceso no afectará el otro proceso.
Cuando se crea el niño procesos; Ahora ambos procesos tendrán el mismo contador de programa (PC), por lo que ambos procesos apuntarán a la misma instrucción siguiente. Los archivos abridos por el proceso principal serán los mismos para el proceso infantil.
El proceso infantil es exactamente el mismo que su padre, pero hay una diferencia en los ID de procesos:
Propiedades del proceso infantil
Las siguientes son algunas de las propiedades que posee un proceso infantil:
Propiedades que no son heredadas por el proceso infantil
Las siguientes son algunas de las propiedades que no son heredadas por un proceso infantil:
tenedor () en c
No hay argumentos en Fork () y el tipo de retorno de la bifurcación () es entero. Debe incluir los siguientes archivos de encabezado cuando se usa Fork ():
#incluirAl trabajar con Fork (), se puede usar para el tipo pid_t Para los procesos de identificación como PID_T se define en .
El archivo de encabezado es donde se define Fork (), por lo que debe incluirlo en su programa para usar Fork ().
El tipo de retorno se define en y la llamada de la bifurcación () se define en . Por lo tanto, debe incluir ambos en su programa para usar la llamada del sistema Fork ().
Sintaxis de la bifurcación ()
La sintaxis de la llamada del sistema Fork () en Linux, Ubuntu es la siguiente:
PID_T FORK (Void);En la sintaxis el tipo de retorno es pid_t. Cuando el proceso infantil se crea con éxito, el PID del proceso infantil se devuelve en el proceso principal y 0 se devolverá al proceso infantil en sí mismo.
Si hay algún error, entonces -1 se devuelve al proceso principal y el proceso infantil no se crea.
No se pasan argumentos a la bifurcación ().Ejemplo 1: llamar a la fork ()
Considere el siguiente ejemplo en el que hemos utilizado la llamada del sistema Fork () para crear un nuevo proceso infantil:
#incluirPRODUCCIÓN:
Sysads@Linuxhint $ GCC Fork.Cordeo C -OEn este programa, hemos usado Fork (), esto creará un nuevo proceso infantil. Cuando se crea el proceso infantil, tanto el proceso principal como el proceso del niño apuntarán a la siguiente instrucción (el mismo contador de programa). De esta manera, las instrucciones restantes o las declaraciones C se ejecutarán el número total de tiempos de proceso, eso es 2norte Times, donde n es el número de llamadas del sistema Fork ().
Entonces, cuando la llamada de la bifurcación () se usa una vez como se indica anteriormente (21 = 2) Tendremos nuestra salida 2 veces.
Aquí cuando se usa la llamada del sistema Fork (), la estructura interna se verá como:
Considere el siguiente caso en el que se usa el horquilla () 4 veces:
#incluirProducción:
Sysads@Linuxhint $ GCC Fork.Cordeo C -OAhora el número total de proceso creado es 24 = 16 y tenemos nuestra declaración de impresión ejecutada 16 veces.
Ejemplo 2: Prueba si Fork () fue exitoso
En el siguiente ejemplo, hemos utilizado la construcción de la toma de decisiones para probar el valor (int) devuelto por Fork (). Y se muestran los mensajes correspondientes:
#incluirPRODUCCIÓN:
Sysads@Linuxhint $ GCC Fork.Cordeo C -OEn el ejemplo anterior, hemos usado el tipo PID_T que almacenará el valor de retorno de la bifurcación (). La bifurcación () se llama en línea:
p = bifurcado ();Por lo tanto, el valor entero devuelto por Fork () se almacena en P y luego P se compara con verificar si nuestra llamada Fork () fue exitosa.
Cuando se usa la llamada Fork () y el niño se crea con éxito, la identificación del proceso infantil se devolverá al proceso de los padres y 0 se devolverá al proceso del niño.La identificación del proceso infantil en el proceso de los padres no será la misma que la identificación del proceso infantil en el proceso infantil en sí mismo. En el proceso infantil, la identificación del proceso infantil será 0.
Con este tutorial, puede ver cómo comenzar con la llamada del sistema de la bifurcación en Linux.