2016-06-26 11 views
0

Ich erstelle ein einfaches Makefile, in dem ich einen Timeout-Befehl ausführe, der den eigentlichen Befehl nach einer bestimmten Zeit unterbricht.Fehleraufrufe nach Timeout-Befehl vermeiden

Beim Ausführen des Makefiles wird jedoch nach dem Unterbrechen des Befehls ein Fehler ausgegeben, anstatt mit dem nächsten Befehl fortzufahren. Ich benutze

--preserve-status 

, um den Fehler zu vermeiden, aber leider das nicht die Arbeit macht. Hat jemand eine Idee, wie man das beheben kann (vielleicht etwas wie eine Try-Catch-Funktion, mit der ich den Fehler abfangen kann)? Vielen Dank im Voraus!

+2

Ich bin mir nicht sicher, was Sie tun möchten. Wenn Sie möchten, dass 'make' fortgesetzt wird, selbst wenn dieser Befehl fehlschlägt, [fügen Sie Ihre Zeile mit' -' voran (http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html#tag_04_84_13_02). –

Antwort

0

Der Befehl timeout wird nach Abschluss des Befehls mit dem Befehlsstatus beendet. Wenn der Befehl wegen des Timeout-Befehls beendet wird, wird der Rückgabe-Status dies wahrscheinlich widerspiegeln (und nicht Null sein). Wenn Sie also erwarten, dass die Zeitüberschreitung auftreten kann, müssen Sie die Rückgabe behandeln. Sie können dies auf zwei Arten tun: Erstens können Sie die - vor dem Rezept verwenden, wie gniforf_gniourf erwähnt, oder Sie können einfach eine || true oder gleichwertige am Ende des Rezepts anhängen, die das Rezept immer Erfolg zurückgeben wird :

foo: 
    timeout --preserve-status delay <command> || echo "timed out" 
Verwandte Themen