장애 조치 기능이 있는 Reboot() 명령

장애 조치 기능이 있는 Reboot() 명령

내 응용 프로그램에서 Reboot() 호출을 구현하고 있습니다. 임베디드 애플리케이션이므로 콘솔, 키보드 또는 전원 스위치가 없습니다. 그럼에도 불구하고 Reboot()는 결국 시스템을 재부팅해야 합니다. 이상적으로는 정상적으로 실패하는 것이 좋습니다.

과거에 시스템이 호출되거나 재부팅되지 reboot않아 문제가 발생한 상황이 있었습니다 . shutdown예를 들어 드라이브를 동기화할 수 없습니다. 제거한 USB 플래시 드라이브를 마운트 해제하세요.

내 시스템은 읽기 전용으로 마운트된 루트 파일 시스템과 함께 내장되어 있으므로 갑작스러운 정전은 큰 문제가 되지 않습니다. 하지만 플래시 드라이브에 로그를 기록하고 가능하면 보존하고 싶습니다.

내 현재 Reboot()는 다음과 같습니다.

void Reboot()
{
    system( "reboot" );     // try the reboot
    sleep(2);
    system( "reboot -f" );      // force
    sleep(2);
    system( "reboot -f -n" );   // force and don't try to sync
    sleep(2);
    system( "kill 1" );     // process 1 is the root process of all
    sleep(2);
    Reset();
}

재설정 명령은 실패하지 않는 하드 시스템 재설정입니다. 시스템에는 감시 타이머도 있습니다.

내 Reboot() 함수에 추가/대체/변경된 내용에 대해 사람들이 의견을 제시하고 싶나요?

예를 들어마법 시스템 요청?

답변1

시스템에는 감시 타이머도 있습니다.

나는 이것이 당신의 대답이라고 생각합니다. 블록 캐시를 비우고 감시자 발로 차기를 멈추십시오. 나는 많은 임베디드 시스템에서 작업해왔지만 전통적인 서버/PC 메커니즘을 사용하여 재부팅을 수행한 시스템을 기억할 수 없습니다.

관련 정보