Partilhar via


Inicialização e término

Importante

Esta é a documentação do Azure Sphere (Legado). O Azure Sphere (Legado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (Integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).

Na inicialização, cada aplicativo do Azure Sphere deve executar alguma inicialização:

  • Registre um manipulador SIGTERM para solicitações de rescisão. O SO do dispositivo Azure Sphere envia o sinal de terminação SIGTERM para indicar que essa aplicação tem de sair, mais frequentemente quando uma atualização está pendente, mas também em resposta a um pedido de desligamento do dispositivo. Como parte de seu código de inicialização, o aplicativo deve registrar um manipulador para tais solicitações. Por exemplo:

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

    No manipulador de terminação, o aplicativo pode executar quaisquer tarefas de desligamento necessárias. Os manipuladores de terminação devem ser POSIX async-signal-safe. Em especial, não devem conter chamadas para Log_Debug(). Os programas de exemplo saem por erro, bem como no recebimento do sinal de terminação. Portanto, esses programas simplesmente definem um Boolean no manipulador de terminação e, em seguida, executam tarefas de limpeza e desligamento depois de sair do loop principal.

  • Inicialize identificadores para periféricos GPIO.

  • Se o aplicativo usa o Hub IoT do Azure, conecte-se ao cliente IoT e registre funções de retorno de chamada para recursos de IoT, como mensagens de nuvem para dispositivo, status de gêmeo de dispositivo e chamadas diretas de método.

No encerramento, o aplicativo deve fechar periféricos, destruir identificadores e liberar memória alocada. O aplicativo tem apenas dois segundos para sair após o recebimento do sinal SIGTERM; se o aplicativo não tiver saído até então, o sistema operacional Azure Sphere enviará um sinal SIGKILL que encerrará imediatamente o aplicativo. O sinal SIGKILL deve ser sempre evitado. Se o aplicativo executar rotineiramente ações que podem levar mais de dois segundos para serem concluídas, considere adicionar um loop de atualização adiado ao aplicativo. Os aplicativos que usam o recurso Powerdown devem fazer qualquer limpeza necessária antes de chamar as APIs de desligamento.