Inicializace a ukončení
Při spuštění by každá aplikace Azure Sphere měla provést určitou inicializaci:
Zaregistrujte obslužnou rutinu SIGTERM pro žádosti o ukončení. Operační systém zařízení Azure Sphere odesílá signál ukončení SIGTERM, který indikuje, že tato aplikace se musí ukončit, nejčastěji při čekání na aktualizaci, ale také v reakci na žádost o vypnutí zařízení. V rámci inicializačního kódu by aplikace měla zaregistrovat obslužnou rutinu pro tyto požadavky. Příklad:
#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);
V obslužné rutině ukončení může aplikace provádět jakékoli úlohy vypnutí, které vyžaduje. Obslužné rutiny ukončení musí být posix async-signal-safe. Zejména nesmí obsahovat volání .
Log_Debug()
Ukázkové programy se ukončí při chybě i při příjmu signálu ukončení. Proto tyto programy jednoduše nastavují logickou hodnotu v obslužné rutině ukončení a potom provádějí úlohy čištění a vypnutí po ukončení hlavní smyčky.Inicializace popisovačů periferních zařízení GPIO
Pokud aplikace používá Azure IoT Hub, připojte se ke klientovi IoT a zaregistrujte funkce zpětného volání pro funkce IoT, jako jsou zprávy typu cloud-zařízení, stav dvojčete zařízení a přímá volání metod.
Po ukončení by aplikace měla zavřít periferie, zničit popisovače a uvolnit přidělenou paměť. Aplikace má pouze dvě sekundy na ukončení po přijetí signálu SIGTERM; Pokud se aplikace do té doby neukončí, operační systém Azure Sphere odešle signál SIGKILL, který aplikaci okamžitě ukončí. Signálu SIGKILL byste se měli vždy vyhnout. Pokud aplikace pravidelně provádí akce, jejichž dokončení může trvat déle než dvě sekundy, zvažte přidání odložené smyčky aktualizací do aplikace. Aplikace, které používají funkci Powerdown , by měly před voláním rozhraní API pro vypnutí provést potřebné vyčištění.