Share via


Initialisatie en beëindiging

Bij het opstarten moet elke Azure Sphere-toepassing enige initialisatie uitvoeren:

  • Registreer een SIGTERM-handler voor beëindigingsaanvragen. Het besturingssysteem van het Azure Sphere-apparaat verzendt het SIGTERM-beëindigingssignaal om aan te geven dat die toepassing moet worden afgesloten, meestal wanneer een update in behandeling is, maar ook als reactie op een aanvraag voor uitschakelen van een apparaat. Als onderdeel van de initialisatiecode moet de toepassing een handler registreren voor dergelijke aanvragen. Bijvoorbeeld:

      #include <signal.h>
      ...
      // Register a SIGTERM handler for termination requests
      struct sigaction action;
      memset(&action, 0, sizeof(struct sigaction));
      action.sa_handler = TerminationHandler;
      sigaction(SIGTERM, &action, NULL);
    

    In de beëindigingshandler kan de toepassing alle afsluittaken uitvoeren die nodig zijn. Beëindigingshandlers moeten POSIX asynchroon signaalveilig zijn. Ze mogen met name geen aanroepen bevatten naar Log_Debug(). De voorbeeldprogramma's sluiten af bij fout en bij ontvangst van het beëindigingssignaal. Daarom stellen deze programma's gewoon een Booleaanse waarde in de beëindigingshandler in en voeren vervolgens opschonings- en afsluittaken uit na het afsluiten van de hoofdlus.

  • Initialiseer ingangen voor GPIO-randapparatuur.

  • Als de toepassing gebruikmaakt van Azure IoT Hub, maakt u verbinding met de IoT-client en registreert u callback-functies voor IoT-functies, zoals cloud-naar-apparaatberichten, apparaatdubbelstatus en directe methodeaanroepen.

Bij beëindiging moet de toepassing randapparatuur sluiten, ingangen vernietigen en toegewezen geheugen vrijmaken. De toepassing heeft slechts twee seconden om af te sluiten na ontvangst van het SIGTERM-signaal; als de toepassing niet is afgesloten, verzendt het Azure Sphere-besturingssysteem een SIGKILL-signaal waarmee de toepassing onmiddellijk wordt beëindigd. Het SIGKILL-signaal moet altijd worden vermeden. Als de toepassing regelmatig acties uitvoert die langer dan twee seconden kunnen duren, kunt u overwegen om een uitgestelde updatelus toe te voegen aan de toepassing. Toepassingen die gebruikmaken van de Powerdown-functie , moeten de benodigde opschoning uitvoeren voordat u de power-down-API's aanroept.