Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <stdlib.h>
  4. #include <sys/stat.h>
  5. #include <sys/sem.h>
  6. #include <fcntl.h>
  7. #include <string.h>
  8. #include <wait.h>
  9.  
  10. int main()
  11. {
  12. int P1, P2, P3;
  13. int optionMenu;
  14. FILE* fp;
  15. char buf[1024];
  16.  
  17. mkfifo("FIFO12", 0777 | IPC_CREAT);
  18. mkfifo("FIFO23", 0777 | IPC_CREAT);
  19.  
  20. switch (P1 = fork())
  21. {
  22. case 0:{
  23.  
  24. switch(optionMenu){
  25. case 1 : {
  26.  
  27. } break;
  28. case 2 : {
  29. if ((fp = fopen("/gutek/CLionProjects/SO_PROJEKT/tekst", "r")) == NULL)
  30. { /* Open source file. */
  31. printf("Nie mozna odnalezc pliku");
  32. return 1;
  33. }
  34.  
  35. int fifo12 = open("FIFO12", O_WRONLY); //otwieranie kolejki fifo podanej nazwie na zapis
  36.  
  37. while (fgets(buf, sizeof(buf), fp) != NULL)
  38. {
  39. buf[strlen(buf) - 1] = '\0';
  40. printf("%s\n", buf);
  41. write(fifo12,buf, sizeof(buf));
  42. }
  43. fclose(fp);
  44.  
  45. } break;
  46. default: {
  47. printf("Wpisano nie prawidlowa liczbe\n");
  48. }
  49. }
  50.  
  51. exit(0);
  52. }
  53.  
  54. case -1:
  55. {
  56. printf("Blad utworzenia procesu\n");
  57. break;
  58. }
  59.  
  60. default:
  61. {
  62.  
  63. }
  64. }
  65.  
  66. switch (P2 = fork())
  67. {
  68. case 0:
  69. {
  70. int fifo12 = open("FIFO12", O_RDONLY);
  71. int fifo23 = open("FIFO23", O_WRONLY);
  72. char dane[512] = {0};
  73. int dlugosclinii;
  74.  
  75. read(fifo12, dane, sizeof(dane));
  76.  
  77. printf("%d dostał odpowiedź: %s\n", getpid(), dane);
  78.  
  79. dlugosclinii = (int)strlen(dane);
  80.  
  81. sprintf(dane, "%d", dlugosclinii);
  82.  
  83. write(fifo23, dane, sizeof(dane));
  84. exit(0);
  85. }
  86. case -1:
  87. {
  88. printf("Blad utworzenia procesu\n");
  89. break;
  90. }
  91. default:
  92. {
  93.  
  94. }
  95. }
  96.  
  97. switch (P3 = fork())
  98. {
  99. case 0:
  100. {
  101. int fifo23 = open("FIFO23", O_RDONLY);
  102. read(fifo23, buf, sizeof(buf));
  103. printf("%s\n", buf);
  104. exit(0);
  105. } case -1:
  106. {
  107. printf("Blad utworzenia procesu\n");
  108. break;
  109. }
  110. default:
  111. {
  112.  
  113. }
  114. }
  115.  
  116. wait(NULL);
  117. wait(NULL);
  118. wait(NULL);
  119.  
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement