Advertisement
piffy

pipe C++

Jul 23rd, 2024 (edited)
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | Source Code | 0 0
  1. #include <sys/types.h>
  2. #include <unistd.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. void  leggi_dalla_pipe (int file)
  7. {
  8.   FILE *f;
  9.   int c;
  10.   f = fdopen (file, "r");
  11.   while ((c = fgetc (f)) != EOF)
  12.     putchar (c);
  13.   fclose (f);
  14. }
  15.  
  16. /* Scrittura di un testo qualsiasi nella pipe */
  17.  
  18. void scrivi_nella_pipe (int file)
  19. {
  20.   FILE *f;
  21.   f = fdopen (file, "w");
  22.   fprintf (f, "Messaggio!\n");
  23.   fclose (f);
  24. }
  25.  
  26. int  main (void)
  27. {
  28.   pid_t pid;
  29.   int mypipe[2];
  30.  
  31.   /* Crea la pipe. */
  32.   if (pipe (mypipe))
  33.     {
  34.  fprintf (stderr, "Pipe non creata.\n");
  35.  return EXIT_FAILURE;
  36.     }
  37.    
  38.   pid = fork ();
  39.   if (pid < 0)
  40.     {
  41.  fprintf (stderr, "Fork fallita.\n");
  42.  return EXIT_FAILURE;
  43.     }
  44.  
  45.   if (pid == 0)
  46.     {
  47.  /* Processo figlio: chiudere la parte di scrittura */
  48.  close (mypipe[1]);
  49.  leggi_dalla_pipe (mypipe[0]);
  50.  return EXIT_SUCCESS;
  51.     }
  52.   else
  53.     {
  54.  /* Processo padre: chiudere la parte di lettura */
  55.  close (mypipe[0]);
  56.  scrivi_nella_pipe (mypipe[1]);
  57.  return EXIT_SUCCESS;
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement