Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: coproc problem when input closed but output open
On Mar 15, 2:04pm, Rory Mulvaney wrote:
}
} Now I'm having trouble with another example, where the coproc doesn't
} return without killing it. Maybe the problem has something to do with the
} output file descriptor of the coproc still being open. But shouldn't the
} coproc finish writing its output and exit?
You still have "cat <&6 &" running in the background. That has a copy of
the coproc's stdin (fd5) open, because it inherited all the descriptors
of the parent shell and fd5 is not specially closed the way the "p"
descriptor is. You can use
cat <&6 5>&- &
to be sure cat doesn't inherit fd5.
It might be clearer if you restructure the code to be:
coproc wcFunc
wcf=$!
# copy output of coproc to stdout
cat <&p &
# copy the write and read fd's for the coproc
exec 5>&p 6<&p
exec 6<&-
# start another null coproc to get a new target for the p fd
coproc exit
Then you don't need to fiddle with fd5 when starting the cat.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author