bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Process group of foreground processes in monitor mode


From: Paolo Herms
Subject: Process group of foreground processes in monitor mode
Date: Thu, 14 Apr 2011 17:41:48 +0200
User-agent: KMail/1.13.6 (Linux/2.6.38-ARCH; KDE/4.6.2; x86_64; ; )

Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS:  -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64' -
DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='x86_64-unknown-linux-gnu' -
DCONF_VENDOR='unknown' -DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash' -
DSHELL -DHAVE_CONFIG_H   -I.  -I. -I./include -I./lib   -march=x86-64 -
mtune=generic -O2 -pipe -
DDEFAULT_PATH_VALUE='/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin'
 
-DSTANDARD_UTILS_PATH='/usr/bin:/bin:/usr/sbin:/sbin' -
DSYS_BASHRC='/etc/bash.bashrc' -DSYS_BASH_LOGOUT='/etc/bash.bash_logout'
uname output: Linux is010237 2.6.38-ARCH #1 SMP PREEMPT Wed Mar 30 08:47:36 
CEST 2011 x86_64 Intel(R) Core(TM)2 Duo CPU P9600 @ 2.53GHz GenuineIntel 
GNU/Linux
Machine Type: x86_64-unknown-linux-gnu

Bash Version: 4.2
Patch Level: 8
Release Status: release

Description:
In a bash script I have to switch on job control using set -m, as it seems to 
be the only way to trap a SIGCHLD as soon as a background process terminates. 
The documentation says that 'Background processes run in a separate process 
group [...]' and this is good. Now it looks like switching on this monitor 
mode leads also foreground processes to run in a seperate process group. This 
is a bug, because specification suggests the contrary, and a problem, because 
the foreground process should receive signals sent to the script's process 
group. 

Repeat-By:
$ bash -c 'set -m; cat'
Observe the process groups of the newly created processes. 
(Don't try to do this from within the same shell you used to launch the 
command by pressing ^Z, as this leads to another issue, see below)

Fix:
I think you should seperate better the concepts of interactive shell and shell 
with job-control. The latter seems to depend too much on the assumption that 
the shell is interactive. This also leads to the issue that you can't launch 
the above command in backgroud. In
$ bash -c 'set -m; cat' &
only the cat-process is stopped while the bash process continues finding the 
end of the script and exiting.
But maybe all this is just confusing and job control for non interactive 
shells should be dropped. In this case there should be an option to control 
whether traps on SIGCHLD should be executed immediately.
-- 
Paolo Herms
PhD Student - CEA-LIST Software Safety Lab. / INRIA ProVal Project
Paris, France



reply via email to

[Prev in Thread] Current Thread [Next in Thread]