1.守护进程的特点
后台服务进程
独立于控制终端
周期性执行某任务
不受用户登录注销影响
(1) 进程组的组长?
组里面的第一个进程
进程组的ID==进程组的组长的ID
(2) 进程组组长的选定法则
进程中的第一个进程
(3) 进程组ID的选定
3.会话-多个进程组
(1) 创建一个会话注意事项:
不能是进程组长
(2) 创建会话的进程成为新的进程组的组长(既是组长又是会长)
有些linux版本需要root权限执行此操作(ubuntu不需要)
创建出的新会话会丢弃原有的控制终端
(1) fork子进程,父进程退出
必须
(2) 子进程创建新会话
必须
setsid();
(3) 改变当前工作目录chdir
不是必须的
重设文件掩码
open函数操作时的umask,子进程会继承父进程的掩码
增加子进程程序操作的灵活性
umask(新的掩码);
不是必须的
(4) 关闭文件描述符
close(0);
close(1);
close(2);
释放资源,因为用不着
不是必须的
执行核心工作
必须的
后台服务进程
独立于控制终端
周期性执行某任务
不受用户登录注销影响
一般采用以d结尾的名字(服务)
2.进程组(1) 进程组的组长?
组里面的第一个进程
进程组的ID==进程组的组长的ID
(2) 进程组组长的选定法则
进程中的第一个进程
(3) 进程组ID的选定
进程组的ID就是组长的进程ID
(1) 创建一个会话注意事项:
不能是进程组长
(2) 创建会话的进程成为新的进程组的组长(既是组长又是会长)
有些linux版本需要root权限执行此操作(ubuntu不需要)
创建出的新会话会丢弃原有的控制终端
一般步骤:先fork,父亲死,儿子执行创建会话操作(setsid)
4.创建守护进程模型(1) fork子进程,父进程退出
必须
(2) 子进程创建新会话
必须
setsid();
(3) 改变当前工作目录chdir
不是必须的
重设文件掩码
open函数操作时的umask,子进程会继承父进程的掩码
增加子进程程序操作的灵活性
umask(新的掩码);
不是必须的
(4) 关闭文件描述符
close(0);
close(1);
close(2);
释放资源,因为用不着
不是必须的
执行核心工作
必须的