A Process group is a collection of related processes. One important feature is that it is possible to send a signal to every process in the group. Typically when the shell creates a process to run an application, the process is placed into a new process group. As that application forks new processes, the processes are all members of the process group. Process groups are used for distribution of signals, and by terminals to arbitrate requests for their input and output:
Notice that cat, sort and uniq all have the same PGID (Process Group ID).
staz@tokra:~/log$ cat results | sort | uniq & ps -jf [1] 1239 UID PID PPID PGID SID C STIME TTY TIME CMD staz 1237 28341 1237 28341 0 17:55 pts/6 00:00:00 cat results staz 1238 28341 1237 28341 0 17:55 pts/6 00:00:00 sort staz 1239 28341 1237 28341 0 17:55 pts/6 00:00:00 uniq
The TIOCGPGRP? and TIOCSPGRP? calls described in termios(4)? are used to get/set the process group of the control terminal.
If a ProcessGroup has a ControllingTerminal, CLOCAL is not set and a hangup occurs, then the ProcessGroup is sent a SIGHUP.
If a ProcessGroup Leader exits, all children processes are sent a SIGHUP
If the exit of the process causes a process group to become orphaned, and if any member of the newly-orphaned process group is stopped, then a SIGHUP signal followed by a SIGCONT signal will be sent to each process in the newly-orphaned process group.
7 pages link to ProcessGroup: