Advertisement
KsaneK

fifo lab8

Nov 23rd, 2017
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.42 KB | None | 0 0
  1. gcc -Wall -o fifo fifo.c
  2. params=""
  3. while [ $1 ]; do
  4.         params="$params $1"
  5. done
  6. ./fifo $params
  7. wait $!
  8. sleep 0.1
  9. echo
  10.  
  11. #include <sys/types.h>
  12. #include <sys/stat.h>
  13. #include <unistd.h>
  14. #include <stdio.h>
  15. #include <fcntl.h>
  16. #include <string.h>
  17. #define BUFFER 50
  18.  
  19. int main()
  20. {
  21.     char *myfifo = "mojefifo";
  22.     mkfifo(myfifo, 0666);
  23.  
  24.     int fd;
  25.  
  26.     if(fork() == 0) {
  27.         fd = open(myfifo, O_RDONLY);
  28.         char buffer[BUFFER];
  29.         int pid = getpid();
  30.         ssize_t bytes_read;
  31.         while((bytes_read = read(fd, buffer, BUFFER-1)) > 0)
  32.         {
  33.             buffer[bytes_read] = '\0';
  34.             printf("Proces %d odczytal: %s\n", pid, buffer);
  35.             sleep(0.02);
  36.         }
  37.         close(fd);
  38.         unlink(myfifo);
  39.     } else if(fork() == 0) {
  40.         fd = open(myfifo, O_RDONLY);
  41.         char buffer[BUFFER];
  42.         int pid = getpid();
  43.         ssize_t bytes_read;
  44.         while((bytes_read = read(fd, buffer, BUFFER-1)) > 0)
  45.         {
  46.             buffer[bytes_read] = '\0';
  47.             printf("Proces %d odczytal: %s\n", pid, buffer);
  48.             sleep(0.02);
  49.         }
  50.         close(fd);
  51.         unlink(myfifo);
  52.     } else {
  53.         fd = open(myfifo, O_WRONLY);
  54.         char buffer[200];
  55.         ssize_t n;
  56.         while((n=read(STDIN_FILENO, buffer, 200)) > 0){
  57.                 write(fd, buffer, n);}//printf("%s", buffer);}
  58.         close(fd);
  59.     }
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement