Ja, Sie müssen das Skript "Unbuffer" ändern, um die Art und Weise zu ändern, in der "Unbuffer" auf die Beendigung des untergeordneten Prozesses wartet.
Aus erwarten Dokumentation:
Zusätzliche Elemente können am Ende des Rückgabewerts von wait erscheinen. Ein optionales fünftes Element kennzeichnet eine Informationsklasse. Derzeit ist CHILDKILLED der einzig mögliche Wert für dieses Element. In diesem Fall sind die nächsten beiden Werte der C-Signalname und eine kurze Textbeschreibung.
Suchen Sie im Skript "Unbuffer" nach exit [lindex [wait] 3]
und ersetzen Sie es durch den folgenden Code:
set result [wait]
send_user "wait returned: $result\n"
if { [llength $result] == 4 } {
exit [lindex $result 3]
} else {
exit 1
}
Nach dieser Änderung werden Sie den Unterschied deutlich sehen. Zum Beispiel läuft Ihr b.sh
Skript erhalten Sie so etwas:
wait returned: 8606 exp6 0 0 CHILDKILLED SIGSEGV {segmentation violation}
Sie können natürlich den Wert von ändern exit 1
von jedem Wert, den Sie wünschen. Sie können mit beenden
139, wenn Sie möchten, aber der Wert ändert sich nicht, um mit dem Signal übereinzustimmen, es sei denn, Sie fügen dem Skript "Unbuffer" noch mehr Code hinzu.