#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
void alarma_sig() {
printf(" ---------------------------------------------saliendo del programa hijo\n");
exit(0);
}
void main() {
printf(" ---------------------------------------------Proceso hijo\n");
//Preparamos el programa para recibir la señal "alarma"
signal(SIGALRM,alarma_sig);
//Enviamos una señal "alarma" en 5 segundos
alarm(5);
//Ponemos el proceso en espera
pause();
}
padre.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void main() {
pid_t pid_padre;
pid_t pid_hijo;
int salida_hijo;
pid_padre = getpid();
printf("-----------------------------------------------Proceso padre\n PID: %d\n",pid_padre);
pid_hijo = fork();
if(pid_hijo == -1) {
printf(" Error al crear proceso hijo\n");
exit(0);
}
if (pid_hijo) {
//Proceso padre
printf(" proceso hijo creado con PID: %d\n",pid_hijo);
//Esperamos a que el proceso hijo termine
//para evitar que quede en estado zombie
waitpid(pid_hijo,&salida_hijo,0);
//El proceso hijo ha finalizado después de 5 segundos
printf(" salida hijo: %d\n",salida_hijo);
//Enviamos una señal "alarma" en 20 segundos
alarm(20);
//Ponemos el proceso en espera
pause();
}else{
//Proceso hijo
execl("/home/[user]/Documentos/hijo","hijo",(char *) 0);
}
}
Resultado de ejecución...
-----------------------------------------------Proceso padre
PID: 3396
proceso hijo creado con PID: 3397
---------------------------------------------Proceso hijo
---------------------------------------------saliendo del programa hijo
salida hijo: 0
Temporizador
No hay comentarios:
Publicar un comentario