Share via


Initialisierung und Beendigung

Beim Start sollte jede Azure Sphere-Anwendung eine Initialisierung durchführen:

  • Registrieren Sie einen SIGTERM-Handler für Beendigungsanforderungen. Das Azure Sphere-Gerätebetriebssystem sendet das SIGTERM-Beendigungssignal, um anzugeben, dass die Anwendung beendet werden muss, am häufigsten, wenn ein Update aussteht, aber auch als Reaktion auf eine Anforderung zum Herunterfahren des Geräts. Als Teil des Initialisierungscodes sollte die Anwendung einen Handler für solche Anforderungen registrieren. Zum Beispiel:

      #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);
    

    Im Beendigungshandler kann die Anwendung alle für das Herunterfahren benötigten Aufgaben ausführen. Beendigungshandler müssen POSIX-asynchron-signalsicher sein. Insbesondere dürfen sie keine Aufrufe von Log_Debug()enthalten. Die Beispielprogramme werden sowohl bei Fehler als auch beim Empfang des Beendigungssignals beendet. Aus diesem Grund legen diese Programme einfach einen booleschen Wert im Beendigungshandler fest und führen dann Bereinigungs- und Herunterfahrensaufgaben aus, nachdem die Standard-Schleife beendet wurde.

  • Initialisieren sie Handles für GPIO-Peripheriegeräte.

  • Wenn die Anwendung Azure IoT Hub verwendet, stellen Sie eine Verbindung mit dem IoT-Client her, und registrieren Sie Rückruffunktionen für IoT-Features wie Cloud-zu-Gerät-Nachrichten, Gerätezwillwillige status und direkte Methodenaufrufe.

Beim Beenden sollte die Anwendung Peripheriegeräte schließen, Handles zerstören und zugeordneten Arbeitsspeicher freigeben. Die Anwendung hat nach Erhalt des SIGTERM-Signals nur zwei Sekunden Zeit, um zu beenden; Wenn die Anwendung nicht beendet wurde, sendet das Azure Sphere-Betriebssystem ein SIGKILL-Signal, das die Anwendung sofort beendet. Das SIGKILL-Signal sollte immer vermieden werden. Wenn die Anwendung routinemäßig Aktionen ausführt, die länger als zwei Sekunden dauern können, sollten Sie erwägen, der Anwendung eine verzögerte Updateschleife hinzuzufügen. Anwendungen, die das Powerdown-Feature verwenden, sollten vor dem Aufrufen der Power-Down-APIs alle erforderlichen Bereinigungen durchführen.