Linux会话(session)

对 Linux会话(Linux session)的理解


会话是由一个或多个进程组 组成的。如下图所示,一个会话中由三个进程组。
会话是由进程组中第一个进程创建出来的(即领头进程<进程组组长>)
会话中的领头进程ID(PID)也是会话的ID(SID).

在这里插入图片描述

一般情况下,一个进程中称为一个job,其中一个为前台运行的job,他直接可以收到终端的输入
并且把结果输出到该终端。其他的job则后台运行。
一般情况下,会话和命令行终端是一一对应的,打开多个命令行终端窗口,实际就创建了多个会话。

调用setsid函数建立一个新的会话


在这里插入图片描述

注意:

调用setsid成功之后的进程会没有控制终端。

如果调用该函数的进程已经是领头进程了,则该函数会出错返回。为了确保不会出现这种错误情况。
会先调用fork函数之后让父进程终止,让子进程继承了本来是父进程的进程组组ID,
而且自己的PID新配备的,不是领头进程,那么调用setsid创建新的会话之后,进程组ID则是子进程的ID.
子进程就会变成该会话的领头进程.

获取会话首进程的进程组ID — getsid


在这里插入图片描述

如果pid为0的话,getsid则会返回调用进程的会话首进程的进程组ID。
如果PID并不属于调用者所在的会话,那么是不能返回会话受进程的进程组ID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值