PDA

View Full Version : [C]domande sull'allocazione di memoria durante lettura su pipe


santaclause83
10-09-2007, 15:29
mettiamo caso debba scrivere stringhe su pipe:

prima invio il numero di caratteri trovato con una strlen,poi invio il messaggio.

il client che riceve,quando alloca spazio per la stringa da ricevere,deve sempre aggiungere 1 per il terminatore?

lo stesso vale per il numero dei byte da leggere specificati sulla read della pipe?

non riesco a leggere precisamente il messaggio spedito,alla prima volta si,ma nelle volte consecutive si concatenano sempre uno o due caratteri indecifrabili..

grazie!

andbin
10-09-2007, 15:40
mettiamo caso debba scrivere stringhe su pipe:

prima invio il numero di caratteri trovato con una strlen,poi invio il messaggio.

il client che riceve,quando alloca spazio per la stringa da ricevere,deve sempre aggiungere 1 per il terminatore?

lo stesso vale per il numero dei byte da leggere specificati sulla read della pipe?Innanzitutto per l'invio la soluzione migliore è quella di non inviare il nullo finale. Se invii "ciao", allora invii solo 4 caratteri.

Il ricevente dovrà allocare spazio di dimensione N + 1 per il nullo finale. Le operazioni di read riempiranno solo N caratteri, chiaramente. Sei poi tu che dovrai assicurarti che la stringa sia correttamente terminata dal nullo (se non hai usato una allocazione che azzera la memoria, vuol dire che dovrai fare alla fine un buffer[N] = '\0', per intenderci).