PDA

View Full Version : [C - Socket] Processo in backgroung?


hee136
01-11-2011, 09:53
int ricevuta;
const int length = 8192;
char buffer[length];
struct iphdr *headerip;

int s = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
while(1) {
printf("Sto per leggere ... \n");
ricevuta = read(s, buffer, length);
printf("Esito ricezione: %d \n",ricevuta);
headerip = buffer;
printf("Ho letto ... \n");
}


Ho scritto il seguente codice per realizzare un processo che riceve tutti i pacchetti IP da quando viene lanciato.
Solo che dopo averne ricevuti qualcuni, il processo sembra uscire e restituisce il controllo all'utente (banalmente la console mi stampa la linea di comando e attende che io inserisca un comando).
Non capisco nè cosa fa nè perchè lo fa.

Apparentemente sembrerebbe continuare ad essere eseguito in stato di background ma, se così fosse, non capisco perchè lo fa e perchè altre volte non lo faceva.

Anticipo un grazie a chi mi darà una mano :)

starfred
02-11-2011, 19:57
ciao, dovresti fare un controllo su quello che restituisce la read, metti un bel errno e vedi qual'è l'errore. In ultima considerazione valgrind è sempre un ottimo alleato.

p.s. usa AF_INET anche se al 99% coincide con PF
pps la read è una soluzione molto smart tuttavia io suggerirei la recvfrom