|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9454
|
[C] Dubbietto su pipe...
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*/
...
Codice:
...
char buffer[20];
read("nomepipe.p", buffer, strlen(buffer);
...
thks
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Nel tuo caso dovrebbero essere letti in un sol colpo. Nota che non puoi comunque fare assunzioni su questo: sicuramente se trasferisci più di 4096 byte, la lettura deve essere fatta in più passi (e la scrittura rischia di essere bloccante). Per trasferimenti < 4096 la read dovrebbe essere unica, per come funzionano le pipe, ma lo standard non te lo garantisce.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Re: [C] Dubbietto su pipe...
Argh...
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9454
|
Re: Re: [C] Dubbietto su pipe...
Quote:
thks
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quant'è la lunghezza della stringa contenuta in buffer, se ancora non ci hai scritto nulla?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Re: Re: Re: [C] Dubbietto su pipe...
Quote:
Un strlen su un array di char non ancora inizializzato non ritorna mai la lunghezza del array. Non sai che cosa c'è in memoria e quindi non puoi sapere che valore ritorna la strlen. ciao |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9454
|
Re: Re: Re: Re: [C] Dubbietto su pipe...
Quote:
Sorry.
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:18.



















