1.shell支持工作控制(job control),可以将多个进程组构成一个会话(session)
2.会话是进程创建的,该进程叫会话的领导进程(Session Leader).
3.会话领导进程PID称为会话的SID(Session ID)
4.会话中每个进程组称为一个工作(job)
5.会话可以有一个进程组前台工作(foreground,fg命令),其他是后台工作(background,bg命令)
6.每个会话可以连接一个终端
7.当终端有输入和输出都会传给该进程的前台进程组,如:Ctrl+Z
,Ctrl+\
8.会话的意义在于我们可以将多个工作组放在一个终端控制
kill -SIGTERM -9999 # 发给进程组
kill -SIGTERM %1 # 发给第一个job,如果1job和进程组是同一个,则这两句命令相同
守护进程
Daemon(精灵)进程,通常独立于控制终端
创建守护进程,调用setsid函数创建一个新的Session,并成为Session Leader。
1.创建子进程
2.父进程退出
3.子进程setsid
4.切换工作目录$HOME
5.设置权限掩码umask
6.关闭文件描述符,避免资源浪费
7.执行核心逻辑
8.退出
参考:
https://www.cnblogs.com/any91/p/7073852.html