Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <unistd.h>
- #include <string.h>
- #include <stdio.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- int main(int argc, char *argv[]){
- int n,N=4,m,velikost,tmpInt;
- char buff[1],tmp[20];
- char* stevilaString;
- char out[10000],tmpOut[10000];
- memset(out,0,10000);
- mkfifo("proizvajalec",0666);
- mkfifo("distributer",0666);
- mkfifo("prodajalec",0666);
- mkfifo("kupec",0666);
- int vhodCev,izhodCev;
- if(argc<2){
- perror("Napaka: prosim vstavite stevila kot parametre!\n");
- return -1;
- }
- for(n = 0; n < N; n++){
- switch(fork()){
- case -1:
- perror("tezava pri klicu fork");
- return -1;
- case 0:
- if(n==0){
- vhodCev = open("proizvajalec",O_RDONLY);
- velikost = read(vhodCev,out,10000);
- out[velikost] = '\0';
- izhodCev = open("distributer",O_WRONLY);
- }
- if(n==1){
- vhodCev = open("distributer",O_RDONLY);
- velikost = read(vhodCev,out,10000);
- out[velikost] = '\0';
- strcpy(tmpOut,out);
- memset(out,0,10000);
- velikost = 0;
- out[0] = '\0';
- stevilaString = strtok(tmpOut," ");
- while (stevilaString != NULL){
- tmpInt = (int)atoi(stevilaString)*1.2;
- velikost += sprintf(tmp,"%d ",tmpInt);
- strcat(out,tmp);
- stevilaString = strtok(NULL," ");
- }
- izhodCev = open("prodajalec",O_WRONLY);
- out[velikost] = '\0';
- }
- if(n==2){
- vhodCev = open("prodajalec",O_RDONLY);
- velikost = read(vhodCev,out,10000);
- out[velikost] = '\0';
- strcpy(tmpOut,out);
- memset(out,0,10000);
- velikost = 0;
- out[0] = '\0';
- stevilaString = strtok(tmpOut," ");
- while (stevilaString != NULL){
- tmpInt = (int)atoi(stevilaString)*1.3;
- velikost += sprintf(tmp,"%d ",tmpInt);
- strcat(out,tmp);
- stevilaString = strtok(NULL," ");
- }
- izhodCev = open("kupec",O_WRONLY);
- out[velikost] = '\0';
- }
- if(n==3){
- vhodCev = open("kupec",O_RDONLY);
- velikost = read(vhodCev,out,10000);
- out[velikost] = '\0';
- izhodCev = 1;
- }
- write(izhodCev,out,velikost);
- close(vhodCev);
- close(izhodCev);
- _exit(0);
- }
- }
- out[0]='\0';
- velikost=0;
- for(m=1;m<argc;m++){
- velikost += sprintf(tmp,"%d ",atoi(argv[m]));
- strcat(out,tmp);
- }
- izhodCev = open("proizvajalec",O_WRONLY);
- if(izhodCev==-1)
- perror("napaka pri odpiranju cevi\n");
- write(izhodCev,out,velikost);
- close(izhodCev);
- for(n = 0; n < N; n++)
- wait(0);
- unlink("proizvajalec");
- unlink("distributer");
- unlink("prodajalec");
- unlink("kupec");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement