Advertisement
HAR1F

Untitled

May 24th, 2020
1,184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.21 KB | None | 0 0
  1. #include <sys/types.h>
  2. #include <sys/stat.h>
  3. #include <fcntl.h>
  4. #include <unistd.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. int main()
  9. {
  10.    int     fd, result;
  11.  
  12.    size_t  size;
  13.    char    resstring[14];
  14.    char    name[] = "aaa.fifo";
  15.  
  16.    if(mknod(name, S_IFIFO | 0666, 0) < 0){
  17.      printf("Can\'t create FIFO\n");
  18.      exit(-1);
  19.    }
  20.  
  21.    if((result = fork()) < 0){
  22.  
  23.       printf("Can\'t fork child\n");
  24.       exit(-1);
  25.  
  26.    } else if (result > 0) {
  27.  
  28.      /* Parent process */
  29.  
  30.       if((fd = open(name, O_WRONLY)) < 0){
  31.          printf("Can\'t open FIFO for writting\n");
  32.      exit(-1);
  33.       }
  34.  
  35.       size = write(fd, "Hello, world!", 14);
  36.  
  37.       if(size != 14){
  38.         printf("Can\'t write all string to FIFO\n");
  39.         exit(-1);
  40.       }
  41.  
  42.       close(fd);
  43.       printf("Parent exit\n");
  44.  
  45.    } else {
  46.       /* Child process */
  47.  
  48.       if((fd = open(name, O_RDONLY)) < 0){
  49.          printf("Can\'t open FIFO for reading\n");
  50.      exit(-1);
  51.       }
  52.  
  53.       size = read(fd, resstring, 14);
  54.  
  55.       if(size < 0){
  56.          printf("Can\'t read string from FIFO\n");
  57.          exit(-1);
  58.       }
  59.  
  60.       printf("Child exit, resstring:%s\n", resstring);
  61.  
  62.       close(fd);
  63.    }
  64.    return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement