进程组:由一个或多个进程构成的集合。
特性:
1)每个进程组都有一个组长进程,组长进程的进程组ID == 其进程ID;
2)进程组组长可以创建一个进程组、创建该组中的进程、终止;
3)只要进程组中留有任一进程,该进程组不会终止(与组长无关);
4)一个进程只能为自己或其子进程设置进程组ID(当然,子进程exec后就与其无关,也就不能由之设定);
函数:
1)取得当前进程的PID:pid_t getpgid(void);
2)设定指定PID进程的进程组ID(遵循特性4):int setpgid(pid_t pid, pid_t pgid);
会话:由一个或多个进程组构成的集合。
特性:
1.当进程为某进程组组长时,不能创建会话;
2.当进程为非组长进程时,可以创建会话,并产生以下影响:
1)该进程变为新会话的会话首进程;
2)该进程成为会话中的一个新进程组的组长进程;
3)如果该进程在创建会话前有一控制终端,则该联系被切断;
函数:
1)创建会话函数:pid_t setsid(void);
2)返回会话首进程的进程组ID:pid_t getsid(pid_t pid);
控制终端:有一个会话获得控制,该会话被分为一个前台进程组和若干个后台进程组;
特性:
1)一个会话可以有一个控制终端;
2)建立与控制终端连接的为会话首进程,在此称为控制进程;
3)一个建立控制终端连接的会话,被分为一个前台进程组和若干个后台进程组;
4)任何时候控制终端键入中断或退出键,都将该信号发送到前台进程组;
5)终端接口遇到网络连接失败(挂断),即将此信号发送至控制进程;
特性:
1)每个进程组都有一个组长进程,组长进程的进程组ID == 其进程ID;
2)进程组组长可以创建一个进程组、创建该组中的进程、终止;
3)只要进程组中留有任一进程,该进程组不会终止(与组长无关);
4)一个进程只能为自己或其子进程设置进程组ID(当然,子进程exec后就与其无关,也就不能由之设定);
函数:
1)取得当前进程的PID:pid_t getpgid(void);
2)设定指定PID进程的进程组ID(遵循特性4):int setpgid(pid_t pid, pid_t pgid);
会话:由一个或多个进程组构成的集合。
特性:
1.当进程为某进程组组长时,不能创建会话;
2.当进程为非组长进程时,可以创建会话,并产生以下影响:
1)该进程变为新会话的会话首进程;
2)该进程成为会话中的一个新进程组的组长进程;
3)如果该进程在创建会话前有一控制终端,则该联系被切断;
函数:
1)创建会话函数:pid_t setsid(void);
2)返回会话首进程的进程组ID:pid_t getsid(pid_t pid);
控制终端:有一个会话获得控制,该会话被分为一个前台进程组和若干个后台进程组;
特性:
1)一个会话可以有一个控制终端;
2)建立与控制终端连接的为会话首进程,在此称为控制进程;
3)一个建立控制终端连接的会话,被分为一个前台进程组和若干个后台进程组;
4)任何时候控制终端键入中断或退出键,都将该信号发送到前台进程组;
5)终端接口遇到网络连接失败(挂断),即将此信号发送至控制进程;