Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: multios and unnecessary processes



On Mon, Jan 10, 2005 at 04:53:25PM +0000, Bart Schaefer wrote:
[...]
> } ~$ zsh -o nomultios -c '{ lsof -ag $$ -d 0-2,10-15 2>&1 >&3 3>&- | tr a b 3>&-; } 3>&1'
> 
> If the number of processes spawned is important, you have to know when
> to use curly braces and when to force a subshell with parens.  Curly
> braces imply that the parent zsh sticks around and waits, whereas a
> subshell with parens can simply do an exec.
> 
> zsh -fc '{ ( lsof -ag $$ -d 0-2,10-15 2>&1 >&3 3>&-; ) | tr a b 3>&-; } 3>&1'
> 
> COMMAND   PID  PGRP     USER   FD   TYPE DEVICE SIZE  NODE NAME
> tr      26811 26811 schaefer    0r  FIFO    0,0      72995 pipe
> tr      26811 26811 schaefer    1u   CHR  136,7          9 /dev/pts/7
> tr      26811 26811 schaefer    2u   CHR  136,7          9 /dev/pts/7
> lsof    26822 26811 schaefer    0u   CHR  136,7          9 /dev/pts/7
> lsof    26822 26811 schaefer    1u   CHR  136,7          9 /dev/pts/7
> lsof    26822 26811 schaefer    2w  FIFO    0,0      72995 pipe

That makes sense but is not very intuitive given that (...) is
generally thought as the form spawning additional processes.

However to get back to my initial statement, don't you agree
it's a problem that

cmd >&2 >&- >&2

doesn't redirect stdout to stderr but to a pipe to a background
process that just echos the output to stderr?

That's not too big an issue. I was just trying to give some code
example in comp.unix.shell that would work the same for any shell
(including zsh with multios).

-- 
Stéphane



Messages sorted by: Reverse Date, Date, Thread, Author