Ciao!
Potresti usare la funzione alarm
codice:
#include <unistd.h>
void alarm( unsigned int seconds)
Questa funzione imposta una sveglia nel sistema operativo.
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.
codice:
#include <signal.h>
signal (int segnale, void (*nomefunzione)(int))
Ricapitolando, scrivi una funzione di quetso tipo:
codice:
void sveglia (int x)
{
/* non faccio nulla, evito solo che il processo sia ucciso */
}
La registri prima di chiamare la alarm
codice:
signal (SIGALRM, sveglia);
chiami la alarm prima della connect
codice:
alarm (15); //15 secondi di timeout
Dimmi se riesci, ciao!