服务器系统怎么编程,[操作系统]服务器编程入门(12) 守护进程

2023-05-16

摘要:

在之前的《服务器编程入门(5)Linux服务器程序规范》中,我们提到过将服务器程序后台化,这就是本节将要讨论的守护进程.

本节主要关注一下问题:

1 什么是守护进程?

2 守护进程的启动方法有哪些?

3 如何创建一个守护进程?

1 什么是守护进程?

在后台运行,且不与任何控制终端关联的进程。

守护进程不与作业控制、终端会话管理、终端产生信号等发生交互,也可以避免在后台运行的守护进程非预期地输出到终端。

两个特点: 守护进程执行中的信息不显示在任何一个终端上

守护进程不被终端产生的无用信号所中断

在理解更多关于守护进程的概念之前,我们先了解一下进程、进程组、会话期和控制终端的关系。 每一个进程有一个进程ID,每个进程都属于一个进程组

每个进程组有一个组长进程组长进程的ID等于进程组ID

会话期是一个或多个进程组的集合,一个会话期可以有一个单独的控制终端(其中,只有一个前台进程组可以控制终端的交互)

从shell中启动的每个进程将继承一个终端,以便进程与用户交互,同时继承父进程的会话期和进程组ID,因此子进程会受发给该会话期或进程组的信号的影响。

守护进程与普通进程的区别如下图所示:

<a%20href=images/loading.gif' data-original="http://images.cnitblog.com/blog/526303/201404/020923021094186.png" width="765" height="663" />

2 守护进程的启动方法有哪些? 在系统启动阶段,许多守护进程又系统初始化脚本启动。这些脚本通常位于/etc目录或以/etc/rc开头的某个目录中。由这些脚本启动的守护进程一开始时就拥有超级用户特权。

许多网络服务器由inetd超级服务器启动。

cron守护进程按照规则定期执行一些程序。由它启动执行的程序同样作为守护进程运行。

at命令用于指定将来某个时刻运行程序,由它启动的程序同样作为守护进程。

从用户终端或前台或后台启动。

3 使用库函数daemon创建守护进程

首先我们使用库函数daemon创建守护进程,然后研究一下守护进程的创建过程,并实现一个守护进程化函数,达到和库函数daemon相同的效果。

函数:daemon

声明: #include int daemon(int nochdir, int noclose);

转载请保留本文网址:

http://www.shaoqun.com/a/87536.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务器系统怎么编程,[操作系统]服务器编程入门(12) 守护进程 的相关文章

随机推荐