Alarmfunktion



  • Hallo,

    ich hab ein meinem C++ Programm eine Alarm funktion eingebaut.
    Das habe ich gemacht weil ich im Programm einen Netzwerkzugriff habe und es sein kann das er dort hängen bleibt wenn der Server nicht richtig erreichbar ist.

    Aus dem Grund habe ich folgendes eingebaut.

    void func_timeout(int t)
    {
    debug = "HTTP Connection Timeout";
    debuger();
    exit(0);
    }
    
    int main()
    ...
    signal(SIGALRM, func_timeout);
    alarm(25);
    server_zugriff();
    ... // Hier geht das Programm dann noch weiter
    

    Das klappt auch wunderbar. Wenn er hängen bleibt wird nach 25 Sekunden das Programm einfach beendet so sollte es auch sein.

    Aber das Problem ist das mein Programm nach dem Zugriff noch weitergeht.
    Also wenn der server_zugriff geklappt hat und das Programm dann im Code weitergeht das aber auch länger als 25 Sekunden dauert bricht er dann auch ab. Das liegt ja daran das der Alarm noch aktiv ist.

    Meine Frage ist nun ob ich das mit einer Abfrage in der func_timeout Funktion machen muss, also das ich nach dem server_zugriff eine Variable setze und diese dann abfrage, oder kann ich den auch anders deaktivieren?

    Danke im vorraus.

    Wuerstle



  • man: alarm():

    Manual page schrieb:

    If an alarm has been set with alarm(), another call to alarm() will supersede the prior call. The request alarm(0) voids the current alarm.

    (oder auf deutsch - nach dem erfolgreichen Aufruf mußt du einfach 'alarm(0)' aufrufen, um den Alarmtimer wieder auszuschalten.


Anmelden zum Antworten