초기화 및 종료
Important
Azure Sphere(레거시) 설명서입니다. Azure Sphere(레거시)는 2027년 9월 27일에 사용 중지되며 사용자는 이 시간까지 Azure Sphere(통합)로 마이그레이션해야 합니다. TOC 위에 있는 버전 선택기를 사용하여 Azure Sphere(통합) 설명서를 볼 수 있습니다.
시작 시 모든 Azure Sphere 애플리케이션은 몇 가지 초기화를 수행해야 합니다.
종료 요청에 대한 SIGTERM 처리기를 등록합니다. Azure Sphere 디바이스 OS는 SIGTERM 종료 신호를 전송하여 업데이트가 보류 중인 경우 애플리케이션이 종료되어야 함을 나타내지만 디바이스 전원 중지 요청에 대한 응답으로도 가장 자주 종료되어야 합니다. 초기화 코드의 일부로, 애플리케이션은 이러한 요청에 대한 처리기를 등록해야 합니다. 예시:
#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);
종료 처리기에서 애플리케이션은 필요한 종료 작업을 수행할 수 있습니다. 종료 처리기는 POSIX 비동기 신호로부터 안전해야 합니다. 특히 에 대한 호출
Log_Debug()
을 포함해서는 안 합니다. 샘플 프로그램은 종료 신호를 받을 때와 오류가 발생할 때 종료됩니다. 따라서 이러한 프로그램은 종료 처리기에서 부울을 설정한 다음 주 루프를 종료한 후 정리 및 종료 작업을 수행합니다.GPIO 주변 장치에 대한 핸들을 초기화합니다.
애플리케이션에서 Azure IoT Hub를 사용하는 경우 IoT 클라이언트에 연결하고 클라우드-디바이스 메시지, 디바이스 쌍 상태 및 직접 메서드 호출과 같은 IoT 기능에 대한 콜백 함수를 등록합니다.
종료 시 애플리케이션은 주변 장치를 닫고 핸들을 삭제하며 할당된 메모리를 해제해야 합니다. 애플리케이션은 SIGTERM 신호를 받으면 종료하는 데 2초밖에 걸립니다. 애플리케이션이 종료되지 않은 경우 Azure Sphere OS는 애플리케이션을 즉시 종료하는 SIGKILL 신호를 보냅니다. SIGKILL 신호는 항상 피해야 합니다. 애플리케이션이 완료하는 데 2초 이상 걸릴 수 있는 작업을 정기적으로 수행하는 경우 지연된 업데이트 루프를 애플리케이션에 추가하는 것이 좋습니다. Powerdown 기능을 사용하는 애플리케이션은 전원 다운 API를 호출하기 전에 필요한 정리를 수행해야 합니다.