From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 62e828e7 for ; Mon, 29 Jul 2019 20:49:45 +0000 (UTC) Received: (qmail 10683 invoked by alias); 29 Jul 2019 20:49:37 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: List-Unsubscribe: X-Seq: 24104 Received: (qmail 14124 invoked by uid 1010); 29 Jul 2019 20:49:37 -0000 X-Qmail-Scanner-Diagnostics: from joooj.vinc17.net by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.101.2/25524. spamassassin: 3.4.2. Clear:RC:0(155.133.131.76):SA:0(-1.9/5.0):. Processed in 1.910744 secs); 29 Jul 2019 20:49:37 -0000 X-Envelope-From: vincent@vinc17.net X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: none (ns1.primenet.com.au: domain at vinc17.net does not designate permitted sender hosts) Date: Mon, 29 Jul 2019 22:48:57 +0200 From: Vincent Lefevre To: zsh-users@zsh.org Subject: Re: kill the LHS command of a pipe once the RHS command terminates Message-ID: <20190729204857.GA28524@zira.vinc17.org> Mail-Followup-To: zsh-users@zsh.org References: <20190628110430.GA13790@zira.vinc17.org> <20190729152309.GA17940@cventin.lip.ens-lyon.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Mailer-Info: https://www.vinc17.net/mutt/ User-Agent: Mutt/1.12.1+33 (6a74e24e) vl-117499 (2019-06-23) On 2019-07-29 08:54:19 -0700, Bart Schaefer wrote: > On Mon, Jul 29, 2019 at 8:24 AM Vincent Lefevre 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. Yes. > > 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. I don't see how this is related to buffering. This would be the same case as with a pipe (cmd1 | cmd2), for which both commands run in foreground and there are no buffering issues. > If you want it run in the foreground, use =(...). That's not OK, because the main command is started only when the =(...) command terminates: zira% echo =(echo a; sleep 3; echo b) gives its output (the temporary file) only after 3 seconds. And even without this problem, I'm not sure that this would work with a pager, as it would think that once a EOF has occurred, there is no more output. > > 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: [...] As described, the "asynchronously" concerns only jobs started with "&". BTW, there is nothing in the job table: zira% echo <(sleep 3); jobs /proc/self/fd/11 zira% > And then in the SIGNALS section: > > Certain jobs are run asynchronously by the shell other than > those explicitly put into the background; It says that jobs explicitly put into the background are run asynchronously, but nothing about the converse. -- Vincent Lefèvre - Web: 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)