zsh-workers
 help / color / mirror / code / Atom feed
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


  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).