分割エラーを引き起こしたコマンドの周りにwhileループを構築します。

分割エラーを引き起こしたコマンドの周りにwhileループを構築します。

特定の状況で分割エラーが発生するプログラムがあります。分割エラーが発生したときにデータを処理するコマンドを実行し、再びコマンドを実行し、分割エラーが停止するまでこれを続けたいと思います。

擬似コードのおおよその試みとして、

dodgy_command

while SegFault
         dataProcessing
         dodgy_command
end

Trapコマンドを使用する必要があるようですが、コマンド構文を理解していません。

ベストアンサー1

プログラムが異常終了すると、終了コード(シェルに見られる)には通常高いビットが設定されているため、値は128以上です。したがって、簡単な解決策は次のとおりです。

dodgy_command

while [ $? -ge 128 ]
do
  process_data
  dodgy_command
done

他の種類のエラーではなくsegfaultだけが必要な場合はwhileラインになります$? -eq 139(SEGVは信号11、128 + 11 = 139であるため)。

失敗時に高い値の終了コードを取得できない場合は、アプリケーション自体がエラーをキャッチして他の終了コードを強制的に適用していることを意味できます。

おすすめ記事