コードを書くとき、エラーが発生したかどうかをチェックすることがよくあります。例は次のとおりです。
char *x = malloc( some_bytes );
if( x == NULL ){
fprintf( stderr, "Malloc failed.\n" );
exit(EXIT_FAILURE);
}
私もstrerror( errno )
過去に利用したことがあります。
exit()
私は、エラーが発生した場合にプログラムが ed であるかどうかが問題にならない小さなデスクトップ アプリケーションしか作成したことがありません。
しかし、今は組み込みシステム (Arduino) 用の C コードを書いていますが、エラーが発生した場合にシステムを終了させたくありません。システムの電源を落とし、エラー レポートを送信し、安全にアイドル状態にできる特定の状態/機能に移行したいと考えています。
単純に関数を呼び出すことerror_handler()
もできますが、スタックが深くなり、メモリが非常に少なくなり、error_handler()
操作不能になる可能性があります。
代わりに、スタックを効果的に折りたたんで大量のメモリを解放し、電源の切断とエラー報告の整理を開始するように実行したいと考えています。システムの電源を安全に落とさないと、深刻な火災の危険があります。
低メモリの組み込みシステムで安全なエラー処理を実装する標準的な方法はありますか?
編集 1:malloc()
組み込みシステムでの使用を制限します。この特定のケースでは、ファイルの形式が正しくないと、ファイルの読み取り時にエラーが発生します。