Advertisement
Cesar_Biker

Untitled

Mar 3rd, 2015
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.68 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <string.h>
  4.  
  5. int imprimir(char *cadena){
  6.     FILE *fichero;
  7.     fichero = fopen("Resultado.txt", "a+");
  8.     fwrite(cadena, 1, strlen(cadena), fichero);
  9.     fclose(fichero);
  10.     return 0;
  11. }
  12.  
  13. int main() {
  14.     char mensaje[128];
  15.    
  16.     int tuberia_permiso[2];
  17.     pipe(tuberia_permiso);
  18.    
  19.     int hilo1 = fork();
  20.     if(hilo1 == 0) {
  21.         //hijo
  22.         int tuberia_permiso2[2];
  23.         pipe(tuberia_permiso2);
  24.        
  25.         int hilo2 = fork();
  26.         if(hilo2 == 0) {
  27.             //nieto
  28.             printf("PID:%d, soy el nieto\n", getpid());
  29.             imprimir("coche\n");
  30.             printf("\t he imprimido coche\n");
  31.             printf("\t enviando permiso al hijo\n");
  32.             write(tuberia_permiso2[1], "permiso", 3);
  33.         }
  34.         else {
  35.             //padre del nieto que a su vez es el hijo del primer padre
  36.             printf("\tsoy el hijo espero permiso del nieto\n");
  37.             read(tuberia_permiso2[0], mensaje, 128);
  38.             printf("PID:%d, soy el hijo\n", getpid());
  39.             imprimir("casa\n");
  40.             printf("\t he imprimido casa\n");
  41.             printf("\t enviando permiso al padre\n");
  42.             write(tuberia_permiso[1], "permiso", 3);
  43.             close(tuberia_permiso2[0]);
  44.             close(tuberia_permiso2[1]);
  45.         }
  46.     }
  47.     else {
  48.         //padre
  49.         printf("\tsoy el padre espero permiso del hijo\n");
  50.         read(tuberia_permiso[0], mensaje, 128);
  51.         printf("PID:%d, soy el padre\n", getpid());
  52.         imprimir("camino\n");
  53.         printf("\t he imprimido camino\n");
  54.     }
  55.     close(tuberia_permiso[0]);
  56.     close(tuberia_permiso[1]);
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement