Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2015
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <string.h>
  4. int imprimir(char *cadena){
  5. FILE *fichero;
  6. fichero = fopen("Resultado.txt", "a+");
  7. fwrite(cadena, 1, strlen(cadena), fichero);
  8. fclose(fichero);
  9. return 0;
  10. }
  11. int main(){
  12. char mensaje[128];
  13. int tuberia1_permiso[2];
  14. int tuberia1_finalizado[2];
  15. pipe(tuberia1_permiso);
  16. pipe(tuberia1_finalizado);
  17. int hilo1 = fork();
  18. if(hilo1 == 0){
  19. //hijo1
  20. printf("\tsoy el hijo %d\n", getpid());
  21. read(tuberia1_permiso[0], mensaje, 128);
  22. printf("\thijo %d: imprimo la cadena 'casa'\n", getpid());
  23. imprimir("casa\n");
  24. write(tuberia1_finalizado[0], "impreso ok", 3);
  25. read(tuberia1_permiso[0], mensaje, 128);
  26. printf("\thijo %d: imprimo la cadena 'río'\n", getpid());
  27. imprimir("río\n");
  28. write(tuberia1_finalizado[1], "impreso ok", 3);
  29. }
  30. else{
  31. //padre
  32. int tuberia2_permiso[2];
  33. int tuberia2_finalizado[2];
  34. pipe(tuberia2_permiso);
  35. pipe(tuberia2_finalizado);
  36. int hilo2 = fork();
  37. if(hilo2 == 0){
  38. //hijo2
  39. printf("\tsoy el hijo %d\n", getpid());
  40. read(tuberia2_permiso[0], mensaje, 128);
  41. printf("\thijo %d: imprimo la cadena 'arbol'\n", getpid());
  42. imprimir("arbol\n");
  43. write(tuberia2_finalizado[1], "impreso ok", 3);
  44. }
  45. else{
  46. //padre
  47. printf("soy el padre %d\n", getpid());
  48. printf("padre: permiso al hijo %d a acceder a memoria compartida\n", hilo1);
  49. write(tuberia1_permiso[1], "permiso", 3);
  50. printf("padre: esperando al hijo %d a que termine\n", hilo1);
  51. printf("padre: permiso al hijo %d a acceder a memoria compartida\n", hilo2);
  52. write(tuberia2_permiso[1], "permiso", 3);
  53. printf("padre: esperando al hijo %d a que termine\n", hilo2);
  54. read(tuberia2_finalizado[0], mensaje, 3);
  55. printf("padre: el hijo %d ha terminado\n", hilo2);
  56. printf("padre: permiso al hijo %d a acceder a memoria compartida\n", hilo1);
  57. write(tuberia1_permiso[1], "permiso", 3);
  58. read(tuberia1_finalizado[0], mensaje, 3);
  59. printf("padre: el hijo %d ha terminado\n", hilo1);
  60. }
  61. close(tuberia2_permiso[0]);
  62. close(tuberia2_permiso[1]);
  63. close(tuberia2_finalizado[0]);
  64. close(tuberia2_finalizado[1]);
  65. }
  66. close(tuberia1_permiso[0]);
  67. close(tuberia1_permiso[1]);
  68. close(tuberia1_finalizado[0]);
  69. close(tuberia1_finalizado[1]);
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement