Practica 06
Practica 06
Practica 06
Octubre 2017
/* generación de procesos */
fork() crea nuevos procesos en el sistema operativo Unix.
Los siguientes códigos de programa son ejemplos para la creación de
procesos ‘hijos’.
Compile y ejecute en UNIX los programas en lenguaje C y verifique
los valores 'pid' con la orden "ps". Pause el programa para
identificar los “id” de los procesos, puede usarse “getch()” u
alguna otra función.
/* Includes */
#include <unistd.h> /* Constantes Simbólicas */
#include <sys/types.h> /* Tipos de datos del sistema primitivos */
#include <errno.h> /* Errores */
#include <stdio.h> /* Input/Output */
#include <sys/wait.h> /* Espera por la terminación del proceso */
#include <stdlib.h> /* Utilerías en General */
Práctica 06
Octubre 2017
exit(0);
}
}
Desarrollo:
fork_1.c
/* Silverschatz, Gavin & Gagne; Operating System Concepts Ninth Edition Figure
3.9, pp 118 */
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork(); /* crea un proceso hijo */
if (pid < 0) { /* occurrió un error*/
fprintf(stderr, "Fork Fallo");
return 1;
}
else if (pid == 0) { /* proceso hijo */
printf("proceso hijo \n ");
execlp("/bin/ls","ls",NULL); /* Código externo */
printf("termina proceso hijo \n "); /* se imprime?
explique porque? */
}
else { /* proceso padre */
wait(NULL); /* proceso padre esperara al hijo a que termine */
printf("Proceso Padre\n Hijo Termino\n");
Práctica 06
Octubre 2017
}
return 0;
}
fork_2.c
fork_3.c
/* Silverschatz, Gavin & Gagne; Operating System Concepts Ninth Edition
Figure 3.32, pp 151 */
#include <stdio.h>
#include <unistd.h>
int main()
{
int i;
for (i = 0; i < 4; i++)
fork();
return 0;
/* Cuantos procesos se crean?, demuéstrelo */
}