2016-06-26 6 views
0

私は、ある一定時間後に実際のコマンドを中断するtimeoutコマンドを実行している単純なMakefileを作成しています。 Makefileを実行するときタイムアウトコマンドの後にエラー呼び出しを回避する

timeout --preserve-status delay <command> 
<next command> 

はしかし、それはコマンドを中断する代わりに、次のコマンドを継続した後にエラーがスローされます。私は使用しています

--preserve-status 

エラーを避けるために残念ながらそれは仕事をしません。 誰かがこれを修正する方法を考えていますか(エラーを捕まえることができるtry-catch機能のようなものかもしれません)? ありがとうございます!

+2

あなたがしたいことはわかりません。このコマンドが失敗しても 'make'を続行したい場合は、[行頭に' -'をつけてください](http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html#tag_04_84_13_02)。 –

答えて

0

timeoutコマンドは、完了するとコマンドstatusで終了します。コマンドがkillを実行するtimeoutコマンドによって終了すると、戻りステータスはこれを反映している可能性があります(ゼロ以外)。したがって、タイムアウトが発生することが予想される場合は、リターンを処理する必要があります。 2つの方法でこれを行うことができます:まず、上記のgniorf_gniourfのようにレシピの前に-を使用するか、レシピの末尾に|| trueまたはそれに相当するものを追加するだけでレシピが常に成功を返すことができます:

foo: 
    timeout --preserve-status delay <command> || echo "timed out" 
関連する問題