|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Mar 2006
Messaggi: 131
|
[C]domande sulle named pipes..
nel caso debba inviare su una named pipe un messaggio più ampio del buffer di scrittura come imposto il ciclo di scrittura?
vi scrivo cosa ho in mente ma non so se va bene e se c'è una funzione che possa emulare la strncpy nel modo in sui vi scrivo sotto,immagino di si ma ora come ora non mene viene in mente alcuna.... ![]() while ( (l=write(fd_server,msg,N)) == EOF){ strncpy(msg,<<messaggio da inviare in posizione N>>,N) } un altra cosa...sulla stessa named pipe la dimensione del buffer di scrittura del client deve coincidere con quella di lettura del server?qual'è la dimensione più usuale? grazie mille! |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Mar 2006
Messaggi: 131
|
il server in ricezione dovrebbe leggere iterazione per iterazione il messaggio e concatenare ogni frammento ricevuto in una stringa sua;
la stringa che si creerà il server sarà allocata alla prima iterazione con una malloc grande quanto scritto nella prima posizione del messaggio mandato il problema è che non riesco a trovare la condizione giusta nella guardia del while per far uscire il server dalla lettura una volta finito il messaggio..ho provato con EOF,'\0' ma niente da fare.. ![]() vi mando il codice che descritto dal passaggio sopra do{ if ( ( l=read(fd_server,&buf_figlio,sizeof(buf_figlio))) == -1){printf("errore in lettura su pipe clientserver \n");exit(errno);} if(i==0)ricevi = (char *)malloc(sizeof(char)*buf_figlio[0]); strncat(ricevi,buf_figlio,strlen(buf_figlio)); i++; }while( l != '\0'); |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:21.