- Process group
In
POSIX -conformantoperating system s, a process group denotes a collection of one or more processes. Process groups are used to control the distribution of signals. A signal directed to a process group is delivered individually to all of the processes that are members of the group.Process groups are themselves grouped into sessions. Process groups are not permitted to migrate from one session to another, and a process may only create new process groups belonging to the same session as it itself belongs to. Processes are not permitted to join process groups that are not in the same session as they themselves are.
New process images created by a call to a function of the
exec
family inherit the process group membership and the session membership of the old process image.Applications
The distribution of signals to process groups forms the basis of job control employed by shell programs. The
tty device driver incorporates a notion of a foreground process group, to which it sends theSIGTSTP ,SIGQUIT , and SIGINT signals generated bykeyboard interrupt s. It also sends theSIGTTIN andSIGTTOU signals to any processes that attempt to read from (and, if appropriate flags are set for the terminal device, write to) the terminal that are "not" in the foreground process group. The shell, in turn, partitions the command pipelines that it creates into process groups, and controls what process group is the foreground process group of its controlling terminal, thus determining what processes (and thus what command pipelines) may perform I/O to and from the terminal at any given time.When the shell
fork
s a new child process for a command pipeline, both the parent shell process and thechild process immediately attempt to make the process into the leader of the process group for the command pipeline. (They both attempt to do the same thing in order to avoid arace condition between the child becoming the process group leader, the child executing the program image of the command being executed, and the parent, or the tty device driver, attempting to send signals to the process group for job control.)Where a textual user interface is being used on a Unix-like system, sessions are used to implement
login session s. A single process, the session leader, interacts with the controlling terminal in order to ensure that all programs are terminated when a user "hangs up" the terminal connection. (Where a session leader is absent, the processes in the terminal's foreground process group are expected to handle hangups.)Where a
graphical user interface is being used, the session concept is largely lost, and the kernel's notion of sessions largely ignored. Graphical user interfaces, such as where theX display manager is employed, use a different mechanism for implementing login sessions.Details
The
system call setsid()
is used to create a new session containing a single (new) process group, with the current process as both the session leader and the process group leader of that single process group. Process groups are identified by a positive integer, the process group ID, which is theprocess identifier of the process that is (or was) the process group leader. Process groups need not necessarily have leaders, although they always begin with one. Sessions are identified by the process group ID of the session leader. POSIX prohibits the change of the process group ID of a session leader.The system call
setpgid()
is used to set the process group ID of a process, thereby either joining the process to an existing process group, or creating a new process group within the session of the process with the process becoming the process group leader of the newly created group. POSIX prohibits the re-use of a process ID where a process group with that identifier still exists (i.e. where the leader of a process group has exited, but other processes in the group still exist). It thereby guarantees that processes may not accidentally become process group leaders.The system call
kill
is capable of directing signals either to individual processes or to process groups.References
*
Single UNIX Specification , Issue 6Further reading
* cite book
url=http://www.informit.com/title/0201702452
title=The Design and Implementation of the FreeBSD Operating System
author=Marshall Kirk McKusick and George V. Neville-Neil
year=2004-08-02
publisher=Addison Wesley
chapterurl=http://www.informit.com/articles/article.aspx?p=366888&seqNum=8
chapter=FreeBSD Process Management: Process Groups and Sessions
id=ISBN 0-201-70245-2
Wikimedia Foundation. 2010.