Codificación con horquilla y ejecutor con el ejemplo en c

Codificación con horquilla y ejecutor con el ejemplo en c
El título de nuestro artículo contiene dos funciones diferentes del lenguaje C que ocurren al ejecutar cualquier programa en nuestro sistema. Desafortunadamente, existe cero posibilidad de ocurrir más de un programa a la vez en C. Solo una sola tarea puede ocurrir en un momento particular, lo que significa que no permite que los programas concurrentes se ejecuten. Hace que espere la finalización de un proceso para ejecutar el otro. Para evitar este problema de resolución de problemas, es posible que deba desarrollar su programa de la misma manera, siendo un buen desarrollador. Linux Fork () se usa para superar la espera y para permitir la concurrencia en su sistema. Ayuda a duplicar un nuevo proceso y crea uno nuevo llamando al proceso duplicado. El nuevo proceso es el proceso infantil, y el anterior se llama proceso principal.

Mientras que la función exec () se usa para cambiar el programa actual existente con el nuevo. Este reemplazo se realiza haciendo enmiendas al contenido de un programa o un archivo. Por lo tanto, la diferencia entre Fork y Exec es que Fork crea un nuevo proceso del proceso existente, y EXEC se utiliza para reemplazar el programa existente creando uno nuevo.

Requisitos previos

Para ejecutar cualquier programa C en su sistema Linux, necesitamos instalar algunos requisitos previos en él. Vaya al terminal utilizando el método de acceso directo Ctrl+Alt+T. Ahora escriba los siguientes comandos para instalar las páginas del hombre.

$ sudo apt instalación manPages-devel

Instalará todas las páginas correspondientes.

En el futuro, para ejecutar un programa en Linux, debe instalar un compilador de código. Que se usa para compilar el código y ejecutarlo. Para este propósito, instalaremos repositorios de GCC en nuestro sistema.

$ sudo apt install gcc

Codificación con ejecutor en c

Como hemos instalado las páginas del hombre en Linux, utilizaremos el siguiente comando para ver la descripción con respecto a Exec. La sintaxis de la muestra primaria es la siguiente:

Sintaxis

Exec (PathName/File, Argv);

Aquí hemos usado el "unistd.H "encabezado, ya que contiene toda la información de las familias de la función ejecutiva.

$ hombre ejecutivo

Ahora en la imagen citada anterior, puede observar los tipos de ejecutivo. Estas son la familia de funciones ejecutivas. Cada uno es para una función diferente siguiendo la misma base, "Exec."

Ejemplo: Ahora, avanzando aún más, describiremos la funcionalidad de Exec con la ayuda de un ejemplo. Tomaremos una función de Exec para demostrar su trabajo, que es "EXECV."En primer lugar, crearemos dos archivos con la extensión de".C."Después de su creación, escribiremos códigos respectivos en ellos y los ejecutaremos para ver el resultado.

Considere un nombre de archivo "Sample4.C". Ábralo y use el siguiente código. En este código, hemos usado execv de una manera particular citada a continuación.

Execv ("./sample4copy ", args);

La primera parte contiene la nueva ruta del directorio, y la segunda parte muestra la matriz de argumentos como un parámetro que hemos pasado.

Muestra4.C

En primer lugar, hemos impreso la identificación del proceso actual. En segundo lugar, hemos creado una matriz de personajes que tiene nula al final para la terminación. En tercer lugar, hemos llamado a la función Sample4Copy.

Muestra4copy.C

Cuando llamamos a la función exec (), la imagen del proceso se cambia. A continuación, la imagen citada a continuación muestra el código de sample4copy.C.

Aquí hemos utilizado solo declaraciones de impresión para obtener la identificación del proceso actual.

La salida de los códigos respectivos se puede obtener utilizando los siguientes comandos.

$ GCC-O SUMPUEST4 SUMPLACIÓN4.C
$ GCC -O Sample4Copy Sample4Copy.C
ps ./Muestra4

Como hemos descrito anteriormente, la palabra "GCC" se usa para compilar el código, y después de la compilación, el código se ejecuta correctamente.

Según la imagen, el PID de Sample4.El archivo C se muestra primero, ya que se declaró antes de la llamada exec. Luego, después de que se llame a la función EXEC (), las declaraciones de impresión del archivo sample4copy.C se ejecuta donde GetPid () se usa para obtener la identificación del proceso.

Codificando con un tenedor en c

La función Fork () crea el proceso infantil desde el proceso principal. También contiene dos encabezados, incluida la información de la bifurcación.

Sintaxis:

PID_T FORK (Void);

Podemos usar la página del hombre para obtener ayuda en el uso

$ hombre tenedor

Ejemplo: Ahora considere un ejemplo creando un archivo "sample3.C". Ingresaremos el código dentro del archivo. Según el código, hemos establecido el estado de la bifurcación como ForkRank.

Muestra3.C

Hemos utilizado la declaración "if-else" para aplicar la condición. Los comandos de impresión simples se declaran aquí para ayudar en la comprensión del concepto de bifurcación (). Forkrank se declara primero como 0 y luego -1. Con un horquilla (), ahora hay dos procesos que funcionan simultáneamente. La salida se puede obtener utilizando el mismo código, como se usa anteriormente en el ejemplo de Exec.

$ GCC -O Sample3.C
ps./Muestra3

La salida muestra que el proceso infantil se ejecuta antes que el padre cuando el proceso principal estaba esperando. La función de espera implica que hace que la función principal espere a menos que se termine uno de los procesos infantiles.

Sistema de bifurcación y llamadas de ejecución colectivamente

Aquí tomaremos dos archivos llamados "Sample1.C "y" Sample2.C". Primero, abra el archivo SAMPL1.c y escriba el código que se adjunta a continuación en la imagen. Hemos usado el sistema Fork () aquí; Cuando se crea el proceso infantil, P se asignará con 0. Mientras usa el sistema EXEC, el Sample1.C será reemplazado por Sample2.C.

Muestra 1.C

Muestra2.C

Similar a los ejemplos discutidos anteriormente, el archivo sample2 contendrá las declaraciones printf en él. En la muestra1.C, el primer comando de impresión se ejecuta primero, luego se llama la función de la horquilla, cuando p == 0, entonces se ejecuta la parte infantil y la muestra2.El archivo C se ejecutará. La salida contendrá GCC para compilar ambos archivos. Aquí la muestra de los padres1.C ID y Sample2.C ID es diferente porque son padres e hijos.

Conclusión

En este artículo, hemos utilizado Fork y Exec EXEC por separado y colectivamente para comprender el uso y el concepto fácilmente. Espero que este tutorial contenga contenido suficiente que conduzca al acceso al aumentar su conocimiento.