首页 Linux守护进程的应用研究

Linux守护进程的应用研究

举报
开通vip

Linux守护进程的应用研究Linux守护进程的应用研究 Linux守护进程的应用研究 摘要:本文主要介绍了linux的守护进程的概念,重点分析了守护进程的特性及如何创建守护进程,并给出了具体的实现实例。 关键词:守护进程 特性 创建守护进程 linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互。其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户登录注销的影响,它们一直在运行着,这种进程就是守护进程(daemon)。例如著名的apache、telnet、f...

Linux守护进程的应用研究
Linux守护进程的应用研究 Linux守护进程的应用研究 摘要:本文主要介绍了linux的守护进程的概念,重点分析了守护进程的特性及如何创建守护进程,并给出了具体的实现实例。 关键词:守护进程 特性 创建守护进程 linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互。其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户登录注销的影响,它们一直在运行着,这种进程就是守护进程(daemon)。例如著名的apache、telnet、ftp等服务程序都是守护进程。除了服务进程外,守护进程还可以配合shell编程, 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 出适合用户自己的新功能,更好地维护系统,大大提高工作效率。比如,作业规划进程crond。下面来介绍一下守护进程的特性及如何创建守护进程。 1 守护进程的特性 1.1 所有的守护进程都是以超级用户启动的(uid为0),所以编写守护进程时要格外小心,编写不好的守护进程很可能对系统造成威胁。 1.2 没有一个守护进程具有控制终端,其终端名设置为问号(,),在后台运行。 1.3 守护进程不存在父进程,双亲的进程都为1,即init进程。 1.4 所有用户层守护进程都是进程组的组长进程以及会话的首进程,而且是这些进程组和会话中的唯一进程。 具有以上特征的进程就是守护进程,编写守护进程的关键实际上就是要满足守护进程的特性。 2 守护进程的编写步骤 2.1 让init进程成为新产生进程的父进程 程序运行后首先调用for函数创建子进程,并让父进程退出。这样,产生的子进程将变成孤儿进程,并被inti进程接管,同时,所产生的新进程将变为在后台运行。 2.2 调用setsid函数 通过调用setsid函数,使得新创建的进程脱离控制终端,同时创建新的进程组,并成为该进程组的首进程。这个步骤是创建守护最重要的一步,为了更好地理解这一步骤,下面介绍一下进程组、会话的基本概念。 在linux系统中,每个进程都属于各自的进程组。进程组是一个或多个进程的集合。每个进程组都有类似于进程号的标识,称为进程组id。进程组id是由首进程的进程号决定的,每个进程组都存在一个首进程。 会话是一个或多个进程组的集合。与进程组类似,每个会话都存在一个首进程。 会话和进程组是linux内核管理多用户情况下用户进程的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。每个进程都属于一个进程组,而进程组又属于某个会话。当用户从终端登录系统,系统会创建一个新的会话。在该终端上启动的进程都会被系统划归到会话的进程组中。 会话中的进程是通过该会话中的首进程与终端相连的。该终端即 是会话的控制终端。一个会话只能有一个控制终端。如果会话存在一个控制终端,则它必然拥有一个前台进程组。属于该组的进程可以从控制终端获得输入,而其他的进程组都为后台进程组。 由于守护进程没有控制终端,使用fork函数创建的子进程继承了父进程的控制终端、会话和进程组,因此,必须创建新的会话,以脱离父进程的影响。setsid函数就是用于创建新会话的。 setsid函数创建新会话,并使得调用setsid函数的进程成为新会话的首进程。调用setsid函数的进程是新创建会话中的惟一的进程组,进程组id为调用进程的进程号,同时要求调用进程不为一个进程的首进程。由于在第一步中调用fork的父进程退出,使得子进程不可能是进程组的首进程。该会话的首进程没有控制终端与其相连。至此,满足了守护进程没有控制终端的要求。 2.3 改变当前目录为根目录 使用fork函数产生的子进程将继承父进程的工作目录,当进程没有结束时,其工作目录所在的文件系统不能卸下。一般需要将工作目录改变到根目录。更改工作目录使用的函数是chdir。 2.4 重设文件权限掩码 文件权限掩码是用来屏蔽文件权限中的对应位的。由于使用fork函数新建的子进程继承了父进程的文件权限掩码,这会给子进程使用文件带来了很多麻烦。因此,把文件权限掩码设置为0,可以大大增强该守护进程的灵活性。设置文件权限掩码的函数是umask。 2.5 关闭文件描述符 进程从创建它的父进程那里继承了打开的 文件描述符。如不关闭,将会浪费系统资源,造成进程所在的文件 系统无法卸下以及引起无法预料的错误。关闭它们的方法是: for(i=0;i #include #include #include #include #define maxfile 65535 void init_daemon(void) { int pid; int i; if(pid=fork()) 创建子进程,结束父进程 exit(0);// else if(pid #include void init_daemon(void);//守护进程初始化函数 main() { file *fp; time_t t; init_daemon();//初始化为daemon while(1)//每隔10秒向daemon.log报告运行状态 { sleep(10);//睡眠10秒 if((fp=fopen(“daemon.log”,”a”)) >=0) { t=time(0); fprintf(fp,” 守护进程还在运行,时间是:%s\n”,asctime(localtime(&t)) ); fclose(fp); } } } 程序运行结果如图1: 运行该程序,它变成了一个守护进程,不再和当前终端关联。用ps命令看不到,必须带参数x才能看到。另外可以看到,用户关闭终端窗口或注销也不会影响守护进程的运行。 4 结束语 守护进程广泛应用于linux/unix环境下的系统管理、网络通信以及嵌入式应用等领域。本文分析了linux守护进程的特性及如何创建守护进程,结合应用心得给出了程序实例,使其具有一定的实用性。 参考文献: [1]张海.一种linux操作系统守护进程的编程实现方法[j].广东水利电力职业技术学院学报,2006[2]:57-59. [2]李玉波,朱自强,郭军.《linux c编程》.清华大学出版社,2005. [3]杜华.《linux编程技术详解》.人民邮电出版社,2007. [4]曹江华.《linux最佳实践工具》.电子工业出版社,2009(
本文档为【Linux守护进程的应用研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_337177
暂无简介~
格式:doc
大小:50KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-09-20
浏览量:7