菩提本无树,明镜变非台 本来无一物,何处惹尘埃
分类: LINUX
2012-10-23 14:52:44
守护进程,即系统服务进程,这些进程没有控制终端,也不能直接和用户交互,更不会受用户登陆或注销影响,是一直运行于系统后台中的服务进程。
2 查看守护进程
通过"ps axj"命令查看进程(图2.1),其中参数"a"表示所有进程,包括系统进程和用户进程;参数"x"表示不仅列有控制终端的进程,也列出所有无控制终端的进程;参数"j"表示列出与作业控制相关的信息。
图2.1
在图中的"TPGID"列中,凡是值为"-1"的进程都是守护进程,其中在"COMMAND"列中用"[ ]"括起来的名字表示内核线程。
3 在用户空间创建守护进程
3.1 创建步骤:
A 确保当前进程不是进程组的Leader
B 重新创建当前进程的新Session
C 将当前工作目录切换到根目录
D 将文件描述符0,1,2重定向到"/dev/null"
3.2 实现方法
实现方法有两种:
第一种: A 在主进程中fork出一个子进程
B 父进程退出
C 子进程调用"setsid()"创建新的Session,成为守护进程
D 调用"chdir()"函数将当前目录切换到根目录
E 调用"open()"及"dup2()"将文件描述符0、1、2重定向到"/dev/null"
第二种: 直接调用"daemon()"函数即可
3.3 示例代码
点击(此处)折叠或打开