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 :)
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 :)