Llamada del sistema de bifurcación en c

Llamada del sistema de bifurcación en c

“El propósito básico del método de comando Fork es crear uno o más procesos infantiles; Los procesos infantiles recién creados se ejecutan simultáneamente con el proceso principal que creó estos procesos infantiles utilizando declaraciones de horquilla. La siguiente declaración seguida por el comando de la horquilla será ejecutada por los procesos de niños y principales simultáneamente. Los mismos registros de CPU, el contador del programa (PC) y los archivos abiertos a los que el proceso principal accede a los procesos de los principales es utilizado por el proceso infantil. El comando de la horquilla no toma ningún parámetro como entrada, pero devuelve un valor entero utilizando el cual podemos identificar fácilmente si el comando de la horquilla creó el proceso infantil con éxito o no."

A continuación se muestra la lista de valores que devuelven el método de la horquilla:

  • Valor negativo: El proceso de crear un proceso infantil falló.
  • Cero: El proceso infantil que acaba de crear fue devuelto.
  • Valor positivo: Devuelto a la persona que llama o padre con un valor positivo. La identificación del proceso del proceso infantil recién generado está contenida en el valor.

Una cosa a tener en cuenta es que Fork es un método de roscado; Por lo tanto, para ver los resultados; Debe ejecutar el proceso en el sistema local. El comando de la horquilla puede requerir ciertos archivos de encabezado o biblioteca, como SYS/TIPOS.H y unistd.H. Debe configurar un sistema operativo basado en Linux o UNIX para ejecutar el programa porque el comando de la horquilla no se puede usar en un entorno de Windows. Primero debe confirmar que el compilador GCC se ha configurado en el entorno del sistema operativo. Para lograr esto, primero debemos iniciar el terminal y luego ingresar el comando GCC -version, que muestra la información que el compilador GCC de la versión 11.2.Se ha instalado 0.

Antes de trabajar en los fragmentos del código C, debe mantener y actualizar su sistema. La razón detrás de su actualización es atender los próximos problemas relacionados con las versiones más recientes de Linux. Entonces, pruebe la consulta de "actualización" a continuación y haga que su Linux esté actualizado.

Ejemplo 1

Comencemos con el programa más simple y fácil, en el que solo usamos un solo método de bifurcación y una declaración de impresión directa. Los programas requeriron archivos de encabezado que se enumeran en las primeras tres líneas del código. El método Fork () se llama en la línea de apertura del método principal. El comando de la bifurcación crea un proceso infantil que ejecuta simultáneamente la declaración a continuación. Como resultado, la declaración de impresión aparecerá dos veces en la pantalla de shell cuando el programa comience a ejecutarse. Comencemos a escribir el comando en el entorno de Ubuntu. Tenemos que crear el archivo usando el editor nano, pero puede usar su elección. Escriba el siguiente comando a continuación para crear el nuevo archivo:

nano bifurcado.C

Cuando el editor abre un archivo en modo de edición, está vacío, por lo que debemos ingresar el código allí antes de cerrar el archivo y guardarlo. El comando de la horquilla debe estar precedido por una declaración que indica que el proceso infantil se iniciará después de este comando. Después de la bifurcación, la declaración de impresión se ejecutará dos veces, una vez por el proceso principal y luego por el proceso infantil recién establecido. Esta declaración solo se ejecutará una vez.

#incluir
#incluir
#incluir
int main ()
printf ("Antes del método de la bifurcación.\norte");
tenedor();
printf ("Proceso infantil creado.\norte");
regresar 0;

Después de guardar y cerrar el conjuague.Cile C, ahora debemos usar el compilador GCC para compilar el archivo C y crear el archivo de salida utilizando el comando a continuación.

GCC Forkthread.C -O Forkthread.afuera

El archivo C será compilado por el compilador GCC, y los resultados se guardarán en el listón.archivo. Sin embargo, si no usa el indicador -O, el compilador GCC almacenará la salida a la A.Fuera del archivo, que es su nombre predeterminado, después de la compilación. La imagen muestra cómo podemos compilar el archivo C usando el comando de arriba.

Los resultados de la compilación revelan que no hubo sintaxis o errores semánticos en nuestro código, lo que demuestra que se había compilado con éxito y que el archivo de salida se había generado con éxito. Puede ver los resultados ahora que el archivo de salida se ha ejecutado. Simplemente escriba el comando corto a continuación para lograr esto:

./tenedor.afuera

Ejemplo 2

En este ejemplo, contaremos los casos en que se ejecutan un código que contiene numerosas líneas de bifurcación (). Debemos escribir numerosos métodos de horquilla y cambiar el código existente. Debe tener en cuenta que el número de veces que se ejecuta un código se ejecuta depende de la potencia de 2, el número de veces que se ha escrito la instrucción FORK. Por ejemplo, si la declaración de la bifurcación se ha escrito tres veces, el código se ejecutará 2^3 = 8 veces. A continuación se muestra el fragmento del código C actualizado para una llamada al sistema de bifurcación.

#incluir
#incluir
#incluir
int main ()
printf ("Antes del método de la bifurcación.\norte");
int i = 0;
tenedor();
tenedor();
tenedor();
printf ("Proceso infantil creado: [%d] \ n", i);
i ++;
regresar 0;

En el código anterior, hay tres declaraciones de horquilla, y antes de ellas, hemos declarado una variable "i" del tipo entero que se utilizará para rastrear el proceso que crea cada instrucción de bifurcación. Esta variable también se incrementará después de cada declaración de bifurcación y antes de la declaración de devolución. Dado que el código ha sido modificado, recompilemos con el compilador GCC. El archivo de salida se genera correctamente.

Como puede ver, la variable "i" no se ha incrementado de ninguna manera porque la declaración de la horquilla es seguida inmediatamente por una declaración de impresión que imprime ocho veces, lo que significa que cada declaración de horquilla contiene un proceso que ejecuta el código mencionado simultáneamente y solo usa una copia del programa, evitando que cualquier incremento tenga lugar en el código. Hay un total de ocho métodos de impresión separados utilizados para imprimir el mensaje a continuación. Como puede ver, no hay incremento. Porque el proceso infantil solo ejecuta un comando de impresión.

Conclusión

Eso se trataba de usar la llamada del sistema C "Fork". Hemos probado diferentes ilustraciones para obtener diferentes salidas, y se han utilizado diferentes métodos. Si desea obtener un control completo de la llamada del sistema de "horquilla", intente implementar los dos ejemplos anteriores de varias maneras en su extremo, y está listo para comenzar.