Abreviando mucho sería algo así:
"El proceso padre lanza 2 procesos. El primero hace x y el segundo y. Sigue pidiendo cadenas has que metamos por teclado la cadena "exit", matando a los 2 procesos."
Hasta el momento he hecho esto:
Código:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
void proceso1(){
//puts(datos_leidos);
printf("Proceso1");
//sleep(200);
}
void proceso2 (){
/*int fich;
fich=open("fichero", O_RDWR | O_TRUNC, 0644);
//write(fich,datos_leidos,strlen(datos_leidos));
close(fich);*/
printf("Proceso2");
//sleep(200);
}
int main(){
pid_t hijo1;
pid_t hijo2;
char datos_leidos[40]="";
int fin=0;
hijo1=fork();
if(hijo1==0)//si se crea el proceso1
{
proceso1();
}
else if(hijo1>0)//proceso padre
{
hijo2=fork();
if(hijo2==0)//si se crea el proceso 2
{
proceso2();
}
else
{
printf("soy el padre");
printf("Introduce datos: ");
scanf("%s",datos_leidos);
if(strcmp(datos_leidos,"exit")==0)
//si se mete exit se mata a los hijos
{
kill (hijo1, SIGTERM);
kill (hijo2, SIGTERM);
return 0;
}
}
}
}
Se supone que fork() devuelve 0 si se ha creado bien el proceso, si no, es el padre no?
El problema es que no se como verificar que proceso esta corriendo.
Gracias de antemano por vuestro tiempo