Нужно сделать таймаут на функцию коннект. Делаю так. struct sigaction act;
bzero(&act, sizeof(act));
act.sa_handler = sig_alarm;
act.sa_flags = SA_ONESHOT;
if(sigaction(SIGALRM, &act, 0) != 0){
perror("Could not set up timeout");
}
else{
alarm(timeout);
}
if (connect (session->socket, (struct sockaddr *) &smtp_sock,sizeof(smtp_sock) ) < 0){ if(errno == EINTR){ printf("Can't connect to host: Timed out!\n"); } else { perror("connect to host "); } return -1; }
На моей машине все работает. Но на сервере программы при окончании таймаута прога сваливается с сообщением Alarm clock
Моя машина SuSE 8.0, gcc 2.95.3, kernel 2.4.18
На сервере РХ 7.1 кернел 2.4.9 gcc 2.96
Прога многопоточная, поэтому если валится один поток то и вся программа тоже.
Подскажите плиз что делать.
Заранее благодарен за любую помощь