Hi, I am trying to make a coprocess in bash, I found an example here: http://doc.mdcc.cx/cgi-bin/dwww?type=file&location=/usr/share/doc/bash-doc/examples/functions/coproc.bash When I tried that example, it sometimes hung, so to debug it (and to understand it) I made my own version. This also hangs sometimes. I found that it is this "exec" command that hangs: ( "$@" <$fifo.i >$fifo.o ; rm -f $fifo.i $fifo.o ) & exec 3>$fifo.i 4<$fifo.o || return $? If I put in a "sleep" command: ( "$@" <$fifo.i >$fifo.o ; rm -f $fifo.i $fifo.o ) & sleep 5 exec 3>$fifo.i 4<$fifo.o || return $? it works. If I switch the 2 lines, to this: exec 3>$fifo.i 4<$fifo.o || return $? ( "$@" <$fifo.i >$fifo.o ; rm -f $fifo.i $fifo.o ) & it does not hang, but the background subshell never ends. To me, it seems to be a timing issue, as it (seems to) work if I put in the "sleep" command. I have attached my script. It should give this output: $ ./mycoproc.bash coprocess_test_1_server: start coprocess_test_1_client: init rc: 0 coprocess_test_1_client: put rc: 0 coprocess_test_1_client: get rc: 0 coprocess_test_1_client: REPLY: 1 + 1 = 2 coprocess_test_1_server: end coprocess_test_1_client: term rc: 0 $ Is there an issue with my script? bash? cygwin? or me? Cheers, Morten