Procesos en C: Crear un nuevo proceso con fork()
Siguiendo con los artículos sobre procesos voy a poner aquí un sencillo ejemplo para ilustrar el funcionamiento de la función fork().
Esta función es la que se encarga de crear un nuevo proceso dentro de un proceso. El nuevo proceso creado es una copia exacta del original, con la única diferencia que cada uno de ellos tiene su propio identificador de proceso (pid).
#include <stdio.h> int main() { int pid; printf("PADRE: Soy el proceso padre y mi pid es: %d\n", getpid()); pid = fork(); // En cuanto llamamos a fork se crea un nuevo proceso. En el proceso // padre 'pid' contendrá el pid del proceso hijo. En el proceso hijo // 'pid' valdrá 0. Eso es lo que usamos para distinguir si el código // que se está ejecutando pertenece al padre o al hijo. if (pid) // Este es el proceso padre { printf("PADRE: Soy el proceso padre y mi pid sigue siendo: %d\n", getpid()); printf("PADRE: Mi hijo tiene el pid: %d\n", pid); } else // Proceso hijo { printf("HIJO: Soy el proceso hijo y mi pid es: %d\n", getpid()); printf("HIJO: mi padre tiene el pid: %d\n", getppid()); } }
En un próximo post explicaré cómo convertir el proceso hijo en un nuevo proceso totalmente diferente (con el conjunto de funciones ‘exec’). Esto nos permitirá lanzar un programa desde dentro de otro.
¿Necesitas ayuda con algún trabajo de clase? Entra en BuscoProfe.com
Tags: C/C++, fork, procesos, programacion
