- Messaggi: 62
- Ringraziamenti ricevuti 0
[LA] Linux avanzato 2008
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
17 Anni 1 Mese fa #84328
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008
perchè la read ritorna il numero di caratteri letti!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- chiara sabbatella
-
- Offline
- Senior Member
-
Riduci
Di più
17 Anni 1 Mese fa #84329
da chiara sabbatella
while((r = read(pipefd[0], buff, 1)) > 0)
{
printf("leggo %c, %d\n", buff[0], r);
}
Il fatto è che nn si verifica mai la condizione che r sia 0 e quindi non esce mai anche quando ha effettivamente letto tutto.... perchè questo?
Risposta da chiara sabbatella al topic [LA] Linux avanzato 2008
Per andare d corsa ho postato un pezzo d codice sbagliato:perchè la read ritorna il numero di caratteri letti!
while((r = read(pipefd[0], buff, 1)) > 0)
{
printf("leggo %c, %d\n", buff[0], r);
}
Il fatto è che nn si verifica mai la condizione che r sia 0 e quindi non esce mai anche quando ha effettivamente letto tutto.... perchè questo?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
17 Anni 1 Mese fa #84330
da COM_EASYSOCIAL_GUEST_NAME
No ovviamente
basta che sai piu' o meno che fa il sistema durante l'inizializzazione, magari ricordati qualche funzioncina carina tipo la rest_init()....
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008
RAGAZZI qualche anima pia che ha seguito il corso (specie le ultime 2 lezioni) o sostenuto l'esame potrebbe dirmi per favore come studiare le ultime 10 pagine della dispensa sull'inizializzazione? bisogna memorizzare tutte quelle funzioni e relativa spiegazione, vedere il codice associato, leggere i capitoli del libro indicati o altro?
GRAZIE 10000!ciao!
No ovviamente
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
17 Anni 1 Mese fa #84331
da COM_EASYSOCIAL_GUEST_NAME
quello che cercavo di dirti prima è che la condizione non va bene semplicemente perchè la read è bloccante, ossia se la pipe è vuota perchè non ci scrive più nessuno non significa che la read ti ritorni 0, ma semplicemente che la funzione non ritorna fino a quando non ci sarà almeno un carattere nella pipe... Il che non avviene mai nel tuo caso perchè l'altro processo ha finito di scrivere...
per questo ti suggerivo di usare un carattere speciale che gli fa capire che deve uscire:
ad esempiospero di esserti stato utile! ciao
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008
Per andare d corsa ho postato un pezzo d codice sbagliato:perchè la read ritorna il numero di caratteri letti!
while((r = read(pipefd[0], buff, 1)) > 0)
{
printf("leggo %c, %d\n", buff[0], r);
}
Il fatto è che nn si verifica mai la condizione che r sia 0 e quindi non esce mai anche quando ha effettivamente letto tutto.... perchè questo?
quello che cercavo di dirti prima è che la condizione non va bene semplicemente perchè la read è bloccante, ossia se la pipe è vuota perchè non ci scrive più nessuno non significa che la read ti ritorni 0, ma semplicemente che la funzione non ritorna fino a quando non ci sarà almeno un carattere nella pipe... Il che non avviene mai nel tuo caso perchè l'altro processo ha finito di scrivere...
per questo ti suggerivo di usare un carattere speciale che gli fa capire che deve uscire:
ad esempio
while (read(.........))
{
if (buff[0]=='\n') break;
}Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
17 Anni 1 Mese fa #84332
da COM_EASYSOCIAL_GUEST_NAME
grazie dirac! Questo è confortante, già ci sono un botto di cose da memorizzare (in teoria da "capire", ma capire senza "ricordare" è come non capire...
) per quest'orale! 
PS: ti avevo mandato un pm qualche giorno fa (non so se lo hai visto). se e quando hai un attimo di tempo/voglia mi potresti rispondere per favore?
grazie 2**10
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008
RAGAZZI qualche anima pia che ha seguito il corso (specie le ultime 2 lezioni) o sostenuto l'esame potrebbe dirmi per favore come studiare le ultime 10 pagine della dispensa sull'inizializzazione? bisogna memorizzare tutte quelle funzioni e relativa spiegazione, vedere il codice associato, leggere i capitoli del libro indicati o altro?
GRAZIE 10000!ciao!
No ovviamentebasta che sai piu' o meno che fa il sistema durante l'inizializzazione, magari ricordati qualche funzioncina carina tipo la rest_init()....
grazie dirac! Questo è confortante, già ci sono un botto di cose da memorizzare (in teoria da "capire", ma capire senza "ricordare" è come non capire...
PS: ti avevo mandato un pm qualche giorno fa (non so se lo hai visto). se e quando hai un attimo di tempo/voglia mi potresti rispondere per favore?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Federico Fioravanti
-
- Offline
- Junior Member
-
Riduci
Di più
- Messaggi: 38
- Ringraziamenti ricevuti 0
17 Anni 1 Mese fa #84475
da Federico Fioravanti
Risposta da Federico Fioravanti al topic [LA] Linux avanzato 2008
allora come è andata la prova di laboratorio del 10?
qualcuno riesce a postare la traccia ??
grazie
qualcuno riesce a postare la traccia ??
grazie
Si prega Accedi o Crea un account a partecipare alla conversazione.