Aracılığıyla paylaş


Başlatma ve sonlandırma

Başlatma sırasında her Azure Sphere uygulamasının bazı başlatma işlemleri gerçekleştirmesi gerekir:

  • Sonlandırma istekleri için bir SIGTERM işleyicisi kaydedin. Azure Sphere cihaz işletim sistemi SIGTERM sonlandırma sinyalini göndererek uygulamanın en sık bir güncelleştirme beklemede olduğunda, ancak bir cihaz güç azaltma isteğine yanıt olarak çıkması gerektiğini belirtir. Başlatma kodunun bir parçası olarak uygulamanın bu tür istekler için bir işleyici kaydetmesi gerekir. Örneğin:

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

    Sonlandırma işleyicisinde uygulama, gerektirdiği kapatma görevlerini gerçekleştirebilir. Sonlandırma işleyicileri POSIX async-signal-safe olmalıdır. Özellikle, çağrısı Log_Debug()içermemelidir. Örnek programlar hem hatada hem de sonlandırma sinyali alındıklarında çıkar. Bu nedenle, bu programlar yalnızca sonlandırma işleyicisinde bir Boole ayarlayıp ana döngüden çıktıktan sonra temizleme ve kapatma görevlerini gerçekleştirir.

  • GPIO çevre birimleri için tanıtıcıları başlatın.

  • Uygulama Azure IoT Hub kullanıyorsa IoT istemcisine bağlanın ve buluttan cihaza iletiler, cihaz ikizi durumu ve doğrudan yöntem çağrıları gibi IoT özellikleri için geri çağırma işlevlerini kaydedin.

Sonlandırma sırasında uygulama çevre birimlerini kapatmalı, tanıtıcıları yok etmeli ve ayrılmış belleği serbest tutmalıdır. Uygulamanın SIGTERM sinyalini aldıktan sonra çıkması için yalnızca iki saniye vardır; uygulamadan çıkmadıysa Azure Sphere işletim sistemi, uygulamayı hemen sonlandıran bir SIGKILL sinyali gönderir. SIGKILL sinyali her zaman önlenmelidir. Uygulama düzenli olarak tamamlanması iki saniyeden uzun sürebilecek eylemler gerçekleştiriyorsa, uygulamaya ertelenmiş bir güncelleştirme döngüsü eklemeyi göz önünde bulundurun. Powerdown özelliğini kullanan uygulamalar, güç kapatma API'lerini çağırmadan önce gerekli temizlemeleri yapmalıdır.