Signal Problem
-
Hi,
mein Problem ist,l dass ich mehere Server kontrollieren möchte ob sie online sind oder nicht.
Wenn er nicht ereichbar ist soll er über ein Signal aus der Funktionspringen und melden das der Server nicht online ist.
Jedoch funktioninert das nur einmal bzw. zweimal.
Ich habe eine kurze Form des Codes zur Verfügung gestellt, hier tritt der Fehler auch auf.
Was muss man hier ändern das es funktioniert.
#include <signal.h> #include <setjmp.h> #include <iostream> #define TIMEOUT 1 static jmp_buf iblade_socket_timeout; static void timeout(int sig) { std::cout << "TIMEOUT" << "\n"; signal(SIGALRM, SIG_IGN); alarm(0); longjmp(iblade_socket_timeout,1); } int main() { for (int i = 0; i < 50; i++) { if (setjmp(iblade_socket_timeout) == 0) { signal(SIGALRM,timeout); /* * Singal bzw. Timeout setzen */ alarm(TIMEOUT); std::cout << "Sleeping 10\n"; sleep(10); alarm(0); } else { std::cout << "Läuft nicht\n"; } } return 0; }
-
sigsetjmp/siglongjmp verwenden