Sim, você precisa modificar o script "unbuffer" para alterar a maneira como "unbuffer" aguarda o término do processo filho.
De esperar documentação:
Additional elements may appear at the end of the return value from wait. An optional fifth element identifies a class of information. Currently, the only possible value for this element is CHILDKILLED in which case the next two values are the C-style signal name and a short textual description.
No script "unbuffer", procure por exit [lindex [wait] 3]
e substitua-o pelo seguinte código:
set result [wait]
send_user "wait returned: $result\n"
if { [llength $result] == 4 } {
exit [lindex $result 3]
} else {
exit 1
}
Após essa modificação, você verá claramente a diferença. Por exemplo, executando seu script b.sh
, você obterá algo assim:
wait returned: 8606 exp6 0 0 CHILDKILLED SIGSEGV {segmentation violation}
Você pode mudar o valor de exit 1
para qualquer valor que desejar. Você pode sair com
139 se desejar, mas o valor não será alterado para corresponder ao sinal, a menos que você adicione ainda mais código ao script "unbuffer".