Ciao, vorrei un chiarimento su una tipica situazione di utilizzo delle pipe:
supponiamo di avere una pipe con nome e poi due processi: un lettore ed uno scrittore. Lo scrittore invia sulla pipe una stringa di 20 caratteri. (Pipe gia' aperte con i diritti "idonei"...)
Lo scrittore fara':
codice:
...
char buffer[] = "LivingAfter Midnight";
if (write("nomepipe.p", buffer, strlen(buffer)) != strlen(buffer))
{
perror("Errore nella write");
exit(-1);
}
/*A questo punto nella pipe ci sono 20 caratteri pronti per essere letti*/
...
Il lettore "dall'altro capo della pipe" li riceve. Nel caso faccia:
codice:
...
char buffer[20];
read("nomepipe.p", buffer, strlen(buffer);
...
sapendo che ci sono esattamente 20 caratteri da leggere ho la certezza che la lettura di tali caratteri avverra' in un sol colpo ovvero con una sola read(...) (Come sopra) oppure potrebbero servire 2 o piu' read(...) ?!?! Ad esempio potrebbe accadere che sia necessario leggere prima 12 caratteri e poi leggerne altri 8 pur avendo specificato alla read(...) che sono disposto a leggere sino a 20 caratteri in un colpo solo ?!?
thks