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

Re: kill the LHS command of a pipe once the RHS command terminates



On Mon, Jul 29, 2019 at 8:24 AM Vincent Lefevre <vincent@xxxxxxxxxx> wrote:
>
> On 2019-06-28 13:04:30 +0200, Vincent Lefevre wrote:
> >
> > zira% head -n 1 <(echo foo; sleep 3; echo err >&2)
> > foo
>
> Another issue is that if the producer side tries to access the terminal
> (e.g. ssh, for a passphrase), all the processes of this side are stopped
> due to a SIGTTOU signal.

Even if they weren't stopped by TTOU, they'd almost certainly be
stopped by TTIN.

> Concerning the documentation, the zshexpn(1) man page does not say
> that a process in process substitution is run in background.

They have to be, otherwise either you'd need unlimited buffering or
the read of the descriptor could deadlock.  If you want it run in the
foreground, use =(...).

> Later
> there's a mention of it being run asynchronously, but this term has
> never been defined.

In the JOBS section:

       If  the  MONITOR  option  is set, an interactive shell associates a job
       with each pipeline.  It keeps a table of current jobs, printed  by  the
       jobs  command,  and  assigns them small integer numbers.  When a job is
       started asynchronously with `&', the shell prints a  line  to  standard
       error which looks like:

              [1] 1234

       indicating that the job which was started asynchronously was job number
       1 and had one (top-level) process, whose process ID was 1234.

And then in the SIGNALS section:

       Certain jobs are run asynchronously  by  the  shell  other  than  those
       explicitly put into the background; even in cases where the shell would
       usually wait for such jobs, an explicit exit command or exit due to the
       option ERR_EXIT will cause the shell to exit without waiting.  Examples
       of such asynchronous jobs are process  substitution,  see  the  section
       PROCESS  SUBSTITUTION  in  the  zshexpn(1) manual page, and the handler
       processes for multios, see the section MULTIOS in the zshmisc(1) manual
       page.



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