하나 이상의 프로세스 그룹들의 집합, 세 개의 프로세스 그룹으로 구성된다.
셸 파이프라인을 통해서 프로세스들이 하나의 프로세스 그룹을 형성한다.
프로세스가 새 새션을 만들때는 setsid 를 호출
#include <unistd.h>
pid_t setsid(void);
반환값: 성공 시 프로세스 그룹 ID, 오류 시 -1
호출자가 이미 프로세스 그룹 리더일 경우 오류 반환
[ 세션 생성과정 ]
- setsid()를 호출한 프로세스는 새로운 하나의 세션을 생성하고, 그 세션의 세션리더가 된다.
- setsid()를 호출한 프로세스는 새로운 프로세스 그룹을 생성하게 되고, 그 프로세스 그룹의 프로세스 그룹리더가 된다.
- setsid()를 호출한 프로세스는 새로운 세션을 만들었으므로 이전 세션의 제어 터미널을 사용할 수 없다. 따라서 setsid()를 호출하여 새롭게 만든 세션은 제어 터미널을 가지고 있지 않다.
* 새로운 세션을 만드는 이유 : 자식 프로세스를 현재 세션과 상관없이 동작시키기 위함.