Bueno lo primero que necesitas es saber como utilizar le llamada al sistema fork() para crear procesos hijos, y lo segundo es un temporizador, esto lo puedes hacer ayudandote de la señal SIGALRM, aqui te pongo un ejemplo muy sencillo de como hacer estas cosas.
Código c:
Ver original#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>
int ppid;
void funcionSenial(int sig);
int main(){
ppid = getpid();
int pid;
char opcion;
signal(SIGALRM, funcionSenial);
if((pid = fork()) == -1)//Trantando de crear proceso hijo
return 1;
if(pid == 0){
/*Proceso del hijo*/
printf("PROCESO HIJO CON PID: %i\n", getpid
()); alarm(1);
while(1);
}
else{
/*Proceso padre*/
printf("PROCESO PADRE CON PID: %i\n", getpid
()); do{
}while(opcion != 'S');
kill(pid, 9);
}
return 0;
}
void funcionSenial(int sig){
static int contador;
contador++;
printf("contador: %i\n", contador
); if(contador == 5){
printf("Imprime esto cada 5 segs\n"); contador = (contador + 1) % 6;
}
alarm(1);
}
Rapidamente te explico un poco, fork() como habia dicho, es una llamada al sistema que crea un proceso hijo a partir del proceso que lo llama, esta funcion devuelve un pid_t (que puedes almacenar en un entero pero siempre es mejor usar el tipo pid_t), 0 o -1. En esta caso almaceno esto en la variable pid. Al crear el proceso hijo, a ambos procesos (padre e hijo) se les devuelve un valor distinto, por lo que la variable pid del hijo recive el valor de 0 y la variable pid del padre recive el ProcessID del hijo, tambien puedes recibir un mensaje valor -1 si no se pudo crear el hijo. Es por eso que hago lo siguiente:
Código c:
Ver originalpid = fork();
if(pid == -1) //SI NO SE PUDO CREAR HIJO; SALIMOS DEL PROGRAMA
return 1;
if(pid == 0){ //SI ERES EL HIJO
/*Aqui el codigo del hijo*/
}
else{ //SI NO, ENTONCES ERES EL PADRE
/*Aqui el codigo del padre*/
}
Espero haberte ayudado, cualquier dude me la haces saber
Saludos++