informatica:sol:laboratorio17:esercitazionib:fifoexample

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
informatica:sol:laboratorio17:esercitazionib:fifoexample [27/04/2017 alle 06:05 (8 anni fa)] – creata Massimo Torquatiinformatica:sol:laboratorio17:esercitazionib:fifoexample [27/04/2017 alle 06:56 (8 anni fa)] (versione attuale) Massimo Torquati
Linea 20: Linea 20:
 /*  /* 
  * In un singolo messaggio vogliamo inviare sia il comando da eseguire   * In un singolo messaggio vogliamo inviare sia il comando da eseguire 
- * che il nome della fifo su cui vogliamo ottenere il risultato.+ * che il nome della FIFO su cui vogliamo ottenere il risultato.
  */  */
 struct message { struct message {
Linea 42: Linea 42:
 #include "msg.h" #include "msg.h"
  
-// nome della fifo privata+// nome della FIFO privata
 char fifo_name[F_SIZE]; char fifo_name[F_SIZE];
 void cleanup() { void cleanup() {
Linea 63: Linea 63:
     }     }
  
-    // apro la fifo pubblica in sola scrittura+    // apro la FIFO pubblica in sola scrittura
     SYSCALL(publicfifo, open(PUBLIC,O_WRONLY), "open public fifo");     SYSCALL(publicfifo, open(PUBLIC,O_WRONLY), "open public fifo");
          
Linea 83: Linea 83:
  SYSCALL(n, write(publicfifo, &msg, sizeof(msg)), "write public fifo");  SYSCALL(n, write(publicfifo, &msg, sizeof(msg)), "write public fifo");
  
- // opro la fifo privata in sola lettura aspettando che il server la apra in scrittura+ // apro la FIFO privata in sola lettura aspettando che il server la apra in scrittura
  SYSCALL(privatefifo, open(msg.fifo_name, O_RDONLY), "open private fifo");  SYSCALL(privatefifo, open(msg.fifo_name, O_RDONLY), "open private fifo");
   
Linea 121: Linea 121:
     static char buffer[PIPE_BUF];     static char buffer[PIPE_BUF];
          
-    /*creating the PUBLIC fifo*/+    /* creo la FIFO pubblica */
     if ((mkfifo(PUBLIC, 0666) == -1) && errno!=EEXIST) {     if ((mkfifo(PUBLIC, 0666) == -1) && errno!=EEXIST) {
  perror("mkfifo public fifo");  perror("mkfifo public fifo");
Linea 128: Linea 128:
          
     int publicfifo;     int publicfifo;
 +    
     // apertura in sola lettura per ricevere i comandi dai clients, aspetto che     // apertura in sola lettura per ricevere i comandi dai clients, aspetto che
-    // almeno uno dei client apra la fifo in scrittura+    // almeno uno dei client apra la FIFO in scrittura
     SYSCALL(publicfifo, open(PUBLIC, O_RDONLY), "open public fifo (read)");     SYSCALL(publicfifo, open(PUBLIC, O_RDONLY), "open public fifo (read)");
-    // apro la fifo in scrittura per evitare di ricevere EOF sulla fifo pubblica+    // apro la FIFO in scrittura per evitare di ricevere EOF sulla FIFO pubblica
     // che rimane sempre aperta     // che rimane sempre aperta
     int notused;     int notused;
Linea 139: Linea 140:
  int n, done;  int n, done;
  SYSCALL(n, read(publicfifo, &msg, sizeof(msg)), "read public fifo");  SYSCALL(n, read(publicfifo, &msg, sizeof(msg)), "read public fifo");
- if (n == 0) break; // ho letto EOF+ if (n == 0) break; // ho letto End-Of-File (EOF), esco
  
  n=0, done=0;  n=0, done=0;
Linea 150: Linea 151:
  int channel[2];  int channel[2];
  int r;  int r;
- SYSCALL(r, pipe(channel), "pipe");+ SYSCALL(r, pipe(channel), "pipe"); // creo una pipe senza nome
   
  char *args[MAXARGS];  char *args[MAXARGS];
informatica/sol/laboratorio17/esercitazionib/fifoexample.1493273103.txt.gz · Ultima modifica: 27/04/2017 alle 06:05 (8 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki