|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Sep 2010
Messaggi: 27
|
[C - Socket] Processo in backgroung?
Codice:
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");
}
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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2011
Messaggi: 381
|
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
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:11.



















