Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/11/2010, 13:23
Avatar de oscarsb1988
oscarsb1988
 
Fecha de Ingreso: abril-2010
Mensajes: 40
Antigüedad: 14 años
Puntos: 0
Respuesta: Procesos C - Linux

Ok. Gracias por la ayuda ^^

Ya he empezado a hacerlo con pipe(), a ver si poco a poco va saliendo el código bien...

Código C:
Ver original
  1. #include <unistd.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <sys/types.h>
  6. #include <signal.h>
  7.  
  8. pid_t pidHijo1();
  9. pid_t pidHijo2();
  10. int tuberia[2];
  11.  
  12. void procesoHijo1()
  13. {
  14.     char buffer[255];
  15.  
  16.     close(tuberia[0]);
  17.     close(0);
  18.     dup (tuberia[0]);
  19.  
  20.     for (;;)
  21.     {
  22.         fgets(buffer,254,stdin);
  23.         while (getc(stdin) != '\n');
  24.         printf("[H] %s", buffer);
  25.     }
  26. }
  27.  
  28. void procesoHijo2()
  29. {
  30.     char buffer[255];
  31.  
  32.     close(tuberia[1]);
  33.     close(0);
  34.     dup (tuberia[0]);
  35.  
  36.     for (;;)
  37.     {
  38.         fgets(buffer,254,stdin);
  39.         while (getc(stdin) != '\n');
  40.         printf("[H] %s", buffer);
  41.     }
  42. }
  43. void procesoPadre()
  44. {
  45.     char buffer[255];
  46.  
  47.     close(tuberia[1]);
  48.     close(0);
  49.     dup (tuberia[0]);
  50.  
  51.     for (;;)
  52.     {
  53.         fgets(buffer,254,stdin);
  54.         while (getc(stdin) != '\n');
  55.         printf("[H] %s", buffer);
  56.     }
  57.  
  58.     kill(pidHijo1, SIGTERM);
  59.     kill(pidHijo2, SIGTERM);
  60.     exit(0);
  61. }
  62.  
  63. int main()
  64. {
  65.     pipe(tuberia);
  66.  
  67.     pidHijo1 = fork();
  68.     pidHijo2 = fork();
  69.  
  70.     if (pidHijo1 < 0)
  71.     {
  72.         fprint(stderr, "Error en fork()\n");
  73.         exit(-1);
  74.     }
  75.  
  76.     if (pidHijo1 == 0)
  77.     {
  78.         procesoHijo1();
  79.     }
  80.     else
  81.     {
  82.         procesoPadre();
  83.     }
  84. }

Esta es otra aproximación... XD