Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.61 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #include <sys/stat.h>
  6. #include <sys/types.h>
  7. #include <errno.h>
  8. #include <signal.h>
  9. #include <sys/wait.h>
  10. #include <string.h>
  11.  
  12. int main(int argc , char* argv []){
  13.    
  14.     int pdesk, pklient, dlugoscZapytania,i;
  15.     const int dlugoscNazwyKolejki = 11;
  16.     char* nazwaKolejki = "client_fifo";
  17.     char zapytanie[512];
  18.    
  19.     mkfifo(nazwaKolejki, 0600);
  20.    
  21.    
  22.     switch(fork()){
  23.         case -1:
  24.             perror("Fork Error");
  25.             exit(1);
  26.         case 0:
  27.             close(1);
  28.             pdesk = open("server_fifo", O_WRONLY);
  29.             if (pdesk ==  -1){
  30.                 perror (" Otwarcie  potoku  do  zapisu ");
  31.                 exit (1);
  32.             }
  33.             else if (pdesk != 1){
  34.                 fprintf(stderr , "Niewlasciwy  deskryptor  do  zapisu\n");
  35.                 exit (1);
  36.             }
  37.            
  38.             if(argc > 0) {
  39.                 strcpy(zapytanie, argv[1]);
  40.             } else {
  41.                 strcpy(zapytanie, "Zbyt malo argumetnow"); 
  42.             }
  43.            
  44.             for(i = 2; i < argc; i++) {
  45.                 strcat(zapytanie, " ");
  46.                 strcat(zapytanie, argv[i]);
  47.             }
  48.            
  49.             dlugoscZapytania = strlen(zapytanie);
  50.            
  51.             write(pdesk, &dlugoscNazwyKolejki, sizeof(dlugoscNazwyKolejki));
  52.             write(pdesk, nazwaKolejki, dlugoscNazwyKolejki);
  53.             write(pdesk, &dlugoscZapytania, sizeof(int));
  54.             write(pdesk, zapytanie, dlugoscZapytania);
  55.            
  56.             //exit(1);
  57.            
  58.         default: {
  59.             close(0);
  60.             pklient = open(nazwaKolejki, O_RDONLY);
  61.             if (pklient ==  -1){
  62.                 perror("Otwarcie  potoku  do  odczytu");
  63.                 exit(1);
  64.             }
  65.             else if (pklient != 0){
  66.                 fprintf(stderr , "Niewlasciwy  deskryptor  do  odczytu\n");
  67.                 exit (1);
  68.             }
  69.             execlp("tr", "tr", "a-z", "a-z", NULL);
  70.         }
  71.         wait(NULL);
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement