From: Stephane Chazelas <stephane.chazelas@gmail.com>
To: Bart Schaefer <schaefer@brasslantern.com>,
Zsh hackers list <zsh-workers@zsh.org>
Subject: Re: "echo | ps -j $(:) | cat | cat | cat" runs components in different process groups
Date: Sun, 25 Mar 2018 19:09:13 +0100 [thread overview]
Message-ID: <20180325180913.GA20656@chaz.gmail.com> (raw)
In-Reply-To: <20180325074827.GB7561@chaz.gmail.com>
2018-03-25 08:48:27 +0100, Stephane Chazelas:
[...]
> Note that with ksh93, like in other shells, one can't delay the
> creation of the other processes with command substitutions as
> they are not done in the main process.
[...]
Well, no that's not true. Since like in zsh, the last pipe
component is not evaluated in a child, in:
sleep 1 | { ps -j; sleep 2; ps -j; }
the second ps -j will be started while the original job process
group leader and everybody else in the group is gone, so has to
be in a different group. I find that ksh93 uses the shell's
process group in that case:
ksh93$ alias sleep=/bin/sleep # otherwise sleep is the builtin one
ksh93$ sleep 1 | { ps -j; sleep 2; ps -j; }
PID PGID SID TTY TIME CMD
7765 7765 7765 pts/6 00:00:00 zsh
7771 7771 7765 pts/6 00:00:00 ksh93
20782 20782 7765 pts/6 00:00:00 sleep
20783 20782 7765 pts/6 00:00:00 ps
PID PGID SID TTY TIME CMD
7765 7765 7765 pts/6 00:00:00 zsh
7771 7771 7765 pts/6 00:00:00 ksh93
20785 7771 7765 pts/6 00:00:00 ps
I find that a sleep 1 | { sleep 2; echo go; sleep 10; } cannot
be suspended after "go". I've seen ksh93 also become very
confused and claiming "no job control" in one situation.
Do we agree that in:
{ a; b; c & } | d $(e) > $(f) | { g $(h); i; }
All those processes should ideally run in the same process group
as they're meant to be part of the same job? Or at least that at
any given time, all running processes in there should be in the
same process group and that process group be the foreground one?
process substitution probably have to be different. AFAICT, in
all shells, they run in background. Some even let you access
them with $! (or $apids in rc) and wait for them. There's also
the exec 3> >(cmd) where clearly cmd has to be in background.
--
Stephane
next prev parent reply other threads:[~2018-03-25 18:09 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-23 16:16 Stephane Chazelas
2018-03-23 23:36 ` Bart Schaefer
2018-03-24 5:19 ` Bart Schaefer
2018-03-24 8:05 ` Joey Pabalinas
2018-03-24 17:34 ` Stephane Chazelas
2018-03-24 22:23 ` Bart Schaefer
2018-03-25 7:00 ` Stephane Chazelas
2018-03-25 8:26 ` Stephane Chazelas
2018-03-25 7:48 ` Stephane Chazelas
2018-03-25 18:09 ` Stephane Chazelas [this message]
2018-03-27 10:17 ` Stephane Chazelas
2018-03-24 22:09 ` Bart Schaefer
2018-04-10 11:45 ` Peter Stephenson
2018-04-10 13:59 ` Peter Stephenson
2018-04-11 22:10 ` Bart Schaefer
2018-04-12 16:23 ` Peter Stephenson
2018-04-15 16:23 ` Stephane Chazelas
2018-04-15 17:38 ` Bart Schaefer
2018-04-15 18:58 ` Stephane Chazelas
2018-04-17 5:39 ` Bart Schaefer
2018-04-17 9:19 ` Peter Stephenson
2018-04-17 16:09 ` Bart Schaefer
2018-04-17 16:27 ` Bart Schaefer
2018-04-17 16:35 ` Peter Stephenson
2018-04-17 17:52 ` Bart Schaefer
2018-04-19 9:40 ` Peter Stephenson
2018-04-20 9:28 ` Forking earlier for background code Peter Stephenson
2018-04-20 10:01 ` Peter Stephenson
2018-04-20 12:54 ` Vin Shelton
[not found] ` <CGME20180420132008eucas1p1c297624e870975cd892c74254970faab@eucas1p1.samsung.com>
2018-04-20 13:20 ` Peter Stephenson
2018-04-20 16:01 ` Vin Shelton
2018-04-23 8:29 ` Peter Stephenson
2018-05-01 9:23 ` Peter Stephenson
[not found] ` <F3A62E38-24E2-4A62-8E19-F54C9B81E9E5@kba.biglobe.ne.jp>
2018-04-23 13:52 ` "echo | ps -j $(:) | cat | cat | cat" runs components in different process groups Peter Stephenson
2018-04-23 14:03 ` Peter Stephenson
[not found] ` <CGME20180423140859eucas1p2591bf1422614209979d4890383268c37@eucas1p2.samsung.com>
2018-04-23 14:08 ` Peter Stephenson
2018-04-23 15:29 ` Jun T.
2018-04-18 6:29 ` Stephane Chazelas
2018-04-18 16:33 ` Bart Schaefer
2018-04-10 9:53 ` Peter Stephenson
2018-03-25 7:38 ` Stephane Chazelas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180325180913.GA20656@chaz.gmail.com \
--to=stephane.chazelas@gmail.com \
--cc=schaefer@brasslantern.com \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).