Ja, Sie müssen das "Unbuffer" -Skript ändern, um die Art und Weise zu ändern, auf die "Unbuffer" wartet, bis der untergeordnete Prozess beendet ist.
Von der Dokumentation erwarten:
Zusätzliche Elemente werden möglicherweise am Ende des Rückgabewerts von wait angezeigt. Ein optionales fünftes Element identifiziert eine Informationsklasse. Derzeit ist der einzige mögliche Wert für dieses Element CHILDKILLED. In diesem Fall sind die nächsten zwei 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. Wenn Sie beispielsweise Ihr b.sh
Skript ausführen, erhalten Sie Folgendes:
wait returned: 8606 exp6 0 0 CHILDKILLED SIGSEGV
Sie können natürlich den Wert exit 1
um jeden gewünschten Wert ändern . Sie können mit 139 abbrechen, wenn Sie möchten, der Wert wird jedoch nicht an das Signal angepasst, wenn Sie dem "Unbuffer" -Skript noch mehr Code hinzufügen.