riscrivo l'esempio che non avevo usato i tag CODE e riusltava poco chiaro, ho anche aggiunto le dichiarazioni di tutte le variabili.
FIFO_to_read è il File Descriptor della FIFO dalla parte del server.
FIFO_to_write è il File Descriptor della FIFO dalla parte del client.
La FIFO è stata aperta correttamente da entrambe le parti, come ho già detto le ho già utilizzate in precedenza e sono ok, il problema è quando gli una stringa anzichè il puntatore alla stringa e dopo faccio la memcopy.
codice:
//////////////////////faccio una memcpy prima della READ/////////////////////////////////////////////
char s1[30] = "ciao a tutti";
char s2[30];
char s3[30];
void * buffer;
int n_byte;
int buffer_dim = 30;
memcpy(s2, s1, 30);
if ((n_byte = read(FIFO_to_read, buffer, buffer_dim) )== -1)
perror(" Errore nella lettura della fifo");
else
printf(" nella fifo sono stati letti %d byte e in buffer c'è %s\n", n_byte, buffer);
////////////////faccio una memcpy dopo la READ///////////////////////////////////////////
memcpy(s3, s1, 30);
questa è la parte del CLIENT:
codice:
char stringa[30] ="sono la stringa da inviare";
int size = 30;
void * buffer = stringa;
int n_byte;
n_byte = write(FIFO_to_write, buffer, size);
if (n_byte == -1)
perror(" Error while writing FIFO");
else
printf("nella fifo sono stati scritti %d byte \n",n_byte);