Ciao!
Potresti usare la funzione alarm
Questa funzione imposta una sveglia nel sistema operativo.codice:#include <unistd.h> void alarm( unsigned int seconds)
Quando arriva il momento, il So invia all'applicazione il segnale SIGALRM, che sblocca il programma da quanlunque chiamata bloccante stesse facendo il quel momento (ad esempio la connect).
La reazione predefinita a SIGALRM è la terminazione del processo, per cui occorre registrare un signal_handler mendiante la funzione signal.
Ricapitolando, scrivi una funzione di quetso tipo:codice:#include <signal.h> signal (int segnale, void (*nomefunzione)(int))
La registri prima di chiamare la alarmcodice:void sveglia (int x) { /* non faccio nulla, evito solo che il processo sia ucciso */ }
chiami la alarm prima della connectcodice:signal (SIGALRM, sveglia);
Dimmi se riesci, ciao!codice:alarm (15); //15 secondi di timeout

Rispondi quotando