Programación en C

Codificación con fork y exec por ejemplo en c

Codificación con fork y exec por ejemplo en c
El título de nuestro artículo contiene dos funciones diferentes del lenguaje C que ocurren mientras se ejecuta cualquier programa en nuestro sistema. Desafortunadamente, no hay posibilidad de que ocurra más de un programa a la vez en C. Solo puede suceder una tarea en un momento determinado, lo que significa que no permite que se ejecuten programas simultáneos. Hace que espere a que se complete un proceso para ejecutar el otro. Para evitar este problema de resolución de problemas, es posible que deba desarrollar su programa de una buena manera, siendo un buen desarrollador. La bifurcación de Linux () se usa para superar la espera y 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 hijo y el anterior se llama proceso padre.

Considerando que, la función exec () se usa para cambiar el programa actual existente por el nuevo. Esta sustitución se realiza haciendo modificaciones al contenido de un programa o archivo. Entonces, la diferencia entre fork y exec es que fork crea un nuevo proceso a partir del proceso existente, y exec se usa para reemplazar el programa existente creando uno nuevo.

Prerrequisitos

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

$ sudo apt install manpages-dev

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 ello instalaremos repositorios GCC en nuestro sistema.

$ sudo apt install GCC

Codificación con ejecutivo en c

Como hemos instalado las páginas de manual en Linux, usaremos el siguiente comando para ver la descripción de exec. La sintaxis de muestra principal es la siguiente:

Sintaxis

Exec (nombre de ruta / archivo, argv);

Aquí hemos utilizado el "unistd.h ”, ya que contiene toda la información de las familias de funciones ejecutivas.

$ man ejecutivo

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

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

Considere un nombre de archivo "sample4.C". Ábrelo y usa el siguiente código. En este código, hemos utilizado execv de una manera particular que se cita 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 caracteres que tiene NULL al final para la terminación. En tercer lugar, hemos llamado a la función sample4copy.

Sample4copy.C

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

Aquí solo hemos utilizado 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 sample4 sample4.C
$ GCC -o sample4copy sample4copy.C
PS ./ sample4

Como hemos descrito anteriormente, la palabra "GCC" se utiliza para compilar el código, y después de compilar, 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 ejecutiva. Luego, después de llamar a la función exec (), ambas declaraciones de impresión del archivo sample4copy.c se ejecuta donde getpid () se usa para obtener la identificación del proceso.

Codificar con un tenedor en c

La función fork () crea el proceso hijo a partir del proceso padre. También contiene dos encabezados, incluida la información de la bifurcación.

Sintaxis:

Pid_t fork (vacío);

Podemos usar la página de manual para obtener ayuda en el uso

$ man fork

Ejemplo: Ahora considere un ejemplo creando un archivo "sample3.C". Ingresaremos el código dentro del archivo. De acuerdo con 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. Aquí se declaran comandos de impresión simples para ayudar a comprender el concepto fork (). Forkrank se declara primero como 0 y luego como -1. Con un fork (), ahora hay dos procesos que funcionan al mismo tiempo. La salida se puede obtener usando el mismo código, como se usó anteriormente en el ejemplo exec.

$ GCC -o sample3.C
PS./ sample3

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

Llamadas al sistema Fork y Exec colectivamente

Aquí tomaremos dos archivos llamados "sample1.c ”y“ sample2.C". Primero, abra el archivo sampl1.cy escriba el código que se adjunta a continuación en la imagen. Hemos utilizado la llamada al sistema fork () aquí; cuando se crea el proceso hijo, p se asignará con 0. Mientras usa la llamada al sistema de exec, el sample1.c será reemplazado por sample2.C.

Muestra1.C

Muestra2.C

Similar a los ejemplos discutidos anteriormente, el archivo sample2 contendrá las declaraciones printf en él. En muestra1.c, el primer comando de impresión se ejecuta primero, luego se llama a la función fork, cuando p == 0, luego se ejecuta la porción secundaria y sample2.Se ejecutará el archivo c. La salida contendrá GCC para compilar ambos archivos. Aquí padre sample1.c id y sample2.c id es diferente porque son padres e hijos.

Conclusión

En este artículo, hemos utilizado fork y exec por separado y colectivamente para comprender el uso y el concepto fácilmente. Espero que este tutorial contenga suficiente contenido que lo lleve a acceder a la escalada de su conocimiento.

Cómo instalar y jugar a Doom en Linux
Introducción a Doom La serie Doom se originó en los años 90 después del lanzamiento del Doom original. Fue un éxito instantáneo y, desde ese momento e...
Vulkan para usuarios de Linux
Con cada nueva generación de tarjetas gráficas, vemos que los desarrolladores de juegos superan los límites de la fidelidad gráfica y se acercan un pa...
OpenTTD frente a Simutrans
Crear su propia simulación de transporte puede ser divertido, relajante y extremadamente atractivo. Es por eso que debes asegurarte de probar tantos j...