分类: LINUX
2011-04-12 19:07:07
013_精灵程序
1) 精灵进程
精灵进程(daemon)又被称为守护进程,是生存期长的一种进程。常常在系统引导装入时启动,在系统关闭时终止。它们没有控制终端,在后台运行。
所有精灵进程都超级用户的优先权运行。
所有这些精灵基础的副进程都是init进程。
2) 编写精灵进程规则
在编写Daemon时需要遵循一些基本规则,以便防止产生并不希望的交互作用。
a)首先做的是调用fork,然后使副进程exit。
i. 如果该精灵进程是由一条简单shell指令启动的,那么使父进程终止使得shell认为这条命令已经执行完成;
ii.子进程继承了父进程的进程组ID,但具有一个新的进程ID,这就保证了子进程不是一个进程组的手进程。这对于下面就要做的setsid调用时必要的前提条件。
b) 调用setsid创建一个新对话期,使得调用进程:
i.成为新对话期的首进程;
ii. 成为一个新进程组的首进程;
iii.没有控制终端。
c) 将当前工作目录更改为根目录
d) 将文件方式创建屏蔽字设置为0,也就是掩码设置为0
e) 关闭不再需要的文件描述符。
精灵进程程序:
运行之后可以用 ps –efjc | grep my_daemon查看是否成功。
父进程是init ID 1,无终端。
水平有限,如果有错误的地方,请指正,thanks
cjok.liao@gmail.com