Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. #include <unistd.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4.  
  5. #include <sys/stat.h>
  6. #include <fcntl.h>
  7.  
  8. int main(int argc, char *argv[]){
  9.  
  10. int n,N=4,m,velikost,tmpInt;
  11. char buff[1],tmp[20];
  12. char* stevilaString;
  13. char out[10000],tmpOut[10000];
  14. memset(out,0,10000);
  15.  
  16. mkfifo("proizvajalec",0666);
  17. mkfifo("distributer",0666);
  18. mkfifo("prodajalec",0666);
  19. mkfifo("kupec",0666);
  20.  
  21. int vhodCev,izhodCev;
  22.  
  23. if(argc<2){
  24. perror("Napaka: prosim vstavite stevila kot parametre!\n");
  25. return -1;
  26. }
  27.  
  28. for(n = 0; n < N; n++){
  29. switch(fork()){
  30. case -1:
  31. perror("tezava pri klicu fork");
  32. return -1;
  33. case 0:
  34. if(n==0){
  35. vhodCev = open("proizvajalec",O_RDONLY);
  36. velikost = read(vhodCev,out,10000);
  37. out[velikost] = '\0';
  38. izhodCev = open("distributer",O_WRONLY);
  39. }
  40.  
  41. if(n==1){
  42. vhodCev = open("distributer",O_RDONLY);
  43.  
  44. velikost = read(vhodCev,out,10000);
  45. out[velikost] = '\0';
  46.  
  47. strcpy(tmpOut,out);
  48. memset(out,0,10000);
  49. velikost = 0;
  50. out[0] = '\0';
  51. stevilaString = strtok(tmpOut," ");
  52. while (stevilaString != NULL){
  53. tmpInt = (int)atoi(stevilaString)*1.2;
  54. velikost += sprintf(tmp,"%d ",tmpInt);
  55. strcat(out,tmp);
  56. stevilaString = strtok(NULL," ");
  57. }
  58. izhodCev = open("prodajalec",O_WRONLY);
  59. out[velikost] = '\0';
  60. }
  61. if(n==2){
  62. vhodCev = open("prodajalec",O_RDONLY);
  63. velikost = read(vhodCev,out,10000);
  64. out[velikost] = '\0';
  65.  
  66. strcpy(tmpOut,out);
  67. memset(out,0,10000);
  68. velikost = 0;
  69. out[0] = '\0';
  70. stevilaString = strtok(tmpOut," ");
  71. while (stevilaString != NULL){
  72. tmpInt = (int)atoi(stevilaString)*1.3;
  73. velikost += sprintf(tmp,"%d ",tmpInt);
  74. strcat(out,tmp);
  75. stevilaString = strtok(NULL," ");
  76. }
  77. izhodCev = open("kupec",O_WRONLY);
  78. out[velikost] = '\0';
  79. }
  80.  
  81. if(n==3){
  82. vhodCev = open("kupec",O_RDONLY);
  83. velikost = read(vhodCev,out,10000);
  84. out[velikost] = '\0';
  85. izhodCev = 1;
  86. }
  87.  
  88. write(izhodCev,out,velikost);
  89.  
  90. close(vhodCev);
  91. close(izhodCev);
  92. _exit(0);
  93. }
  94. }
  95. out[0]='\0';
  96. velikost=0;
  97. for(m=1;m<argc;m++){
  98. velikost += sprintf(tmp,"%d ",atoi(argv[m]));
  99. strcat(out,tmp);
  100. }
  101.  
  102. izhodCev = open("proizvajalec",O_WRONLY);
  103. if(izhodCev==-1)
  104. perror("napaka pri odpiranju cevi\n");
  105. write(izhodCev,out,velikost);
  106. close(izhodCev);
  107. for(n = 0; n < N; n++)
  108. wait(0);
  109. unlink("proizvajalec");
  110. unlink("distributer");
  111. unlink("prodajalec");
  112. unlink("kupec");
  113. return 0;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement