informatica:sol:laboratorio17:esercitazionib:fifoexample
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Prossima revisione | Revisione precedente | ||
informatica:sol:laboratorio17:esercitazionib:fifoexample [27/04/2017 alle 06:05 (8 anni fa)] – creata Massimo Torquati | informatica: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 " | #include " | ||
- | // 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, | SYSCALL(publicfifo, | ||
| | ||
Linea 83: | Linea 83: | ||
SYSCALL(n, write(publicfifo, | SYSCALL(n, write(publicfifo, | ||
- | // 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, | SYSCALL(privatefifo, | ||
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, | if ((mkfifo(PUBLIC, | ||
perror(" | perror(" | ||
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, | SYSCALL(publicfifo, | ||
- | // 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, | SYSCALL(n, read(publicfifo, | ||
- | 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, | + | SYSCALL(r, |
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