1*13de33a5SJulio Merinotrap ': $((brokenpipe+=1))' PIPE 2*13de33a5SJulio Merino 3*13de33a5SJulio MerinoP=${TMPDIR:-/tmp} 4*13de33a5SJulio Merinocd $P 5*13de33a5SJulio MerinoT=$(mktemp -d sh-test.XXXXXX) 6*13de33a5SJulio Merinocd $T 7*13de33a5SJulio Merino 8*13de33a5SJulio Merinobrokenpipe=0 9*13de33a5SJulio Merinomkfifo fifo1 fifo2 10*13de33a5SJulio Merino{ 11*13de33a5SJulio Merino { 12*13de33a5SJulio Merino exec ${SH} -c 'exec <fifo1; read dummy' 13*13de33a5SJulio Merino } 7<&- # fifo2 should be kept open, but not passed to programs 14*13de33a5SJulio Merino true 15*13de33a5SJulio Merino} 7<fifo2 & 16*13de33a5SJulio Merino 17*13de33a5SJulio Merinoexec 4>fifo2 18*13de33a5SJulio Merinoexec 3>fifo1 19*13de33a5SJulio Merinoecho dummy >&4 2>/dev/null 20*13de33a5SJulio Merinoif [ $brokenpipe -eq 1 ]; then 21*13de33a5SJulio Merino : ${rc:=0} 22*13de33a5SJulio Merinofi 23*13de33a5SJulio Merinoecho dummy >&3 24*13de33a5SJulio Merinowait 25*13de33a5SJulio Merino 26*13de33a5SJulio Merinorm fifo1 fifo2 27*13de33a5SJulio Merinormdir ${P}/${T} 28*13de33a5SJulio Merinoexit ${rc:-3} 29