linux嵌入式守护进程编写_第1页
linux嵌入式守护进程编写_第2页
linux嵌入式守护进程编写_第3页
linux嵌入式守护进程编写_第4页
linux嵌入式守护进程编写_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成绩:嵌入式Linux应用程序开发作业与上机实验级:12 级电实班t=r.号:任课老师:完成时间:2014/10/26信息与通信工程学院slee p(10);2014 2015学年第1学期实验二守护进程编写一、实验目的1. 熟悉Linux系统中守护进程的基本概念。2. 掌握Linux系统中守护进程编写方法。二、实验内容1. 建立一个守护进程,然后在该守护进程中新建一个子进程, 该子进程暂停10s, 然后自动退出,并由守护进程收集子进程退出的消息。 子进程退出后,守护进程 循环暂停,其间隔时间为10s。2. 要求子进程和守护进程的退出消息均在/var/log/messa

2、ges 中输出。3. 画出流程图,通过编程实现。4. 在实验平台上运行,记录实验过程与实验现象,并进行简单分析。三、实验参考1.守护进程创建流程图幵蛤2. 参考源代码/*pro c_daem on.c*/ #in elude <stdio.h> #in elude <stdlib.h>#in elude <uni std.h> #in elude <sys/wait.h> #in elude <syslog.h> #defi ne MAXFILE 65535 int mai n(void)pid_t child1,child2;int

3、 i;/创建守护进程/错误处理child1 = fork()if( child1 = -1 )perror("child1 fork");exit(1);else if( child1 > 0 )exit( 0 );openl og("exc2 _in fo", LOG_ PID, LOG_DAEMON);setsid();/在子进程中创建新的会话chdir( "/");/改变当前目录为根目录umask( 0 );/重设文件权限掩码for( i = 0 ; i < MAXFILE ; i+ )close( i );chil

4、d2 = fork();/在该守护进程中新建一个子进程if( child2 = -1 )perror("child2 fork");exit(1);子进程暂停10selse if( child2 = 0 )syslog( LOG_INFO, " child2 will slee p for 10s ");/子进程自动退出syslog( LOG_INFO, " child2 is goi ng to exit! ");/ exit(0);else守护进程收集子进程退出的消息wait pid( child2, NULL, 0);/ sys

5、log( LOG_INFO , " childl n oticed that child2 has exited ");closelogo;while(1) slee p(10);/子进程退出后,守护进程循环暂停,其间隔时间为 10s四、实验步骤(1) 、改变路径$ cd /home/mich/shiya n/(2) 、新建文件shouhu.c,使用vi编辑器进行编辑,写入代码。$vi shouhu.c(3) 、使用gcc编译器对源代码shouhu.c进行编译,指定生成的目标文件名 为shouhu,输入命令如下。$ gcc shouhu.c -o shouhu如终端提示错误

6、信息,则应返回2.1仔细检查和修改源代码,直到编译产生 目标文件shouhu为止,记录源代码错误部分的修改内容,并分析原因。(4) 、查看目标文件shouhu属性,输入命令如下。$ ls -l(5) 、如shouhu无可执行权限,则需添加可执行权限,输入命令如下。$ chmod a+x shouhu(6) 、执行shouhu,输入命令如下。$ ./shouhu如运行结果未达到图一所示,则返回2.1按顺序重复进行源代码编辑和编译 操作,直到运行结果达到预计要求为止,记录具体修改过程和实验运行结果。(7) 、源代码交叉编译使用交叉编译工具链arm-linux-gcc 对源代码shouhu.c进行编

7、译,指定生成的可以在实验平台上运行的目标文件名为shouhu_a,输入命令如下。$ arm-li nu x-gcc shouhu.c -o shouhu_a(8) 、复制shouhu_a到FTP服务器vsftpd的默认路径,输入命令如下。$ cp shouhu_a /home/ft p(9) 、配置Ubuntu的IP地址与实验平台为同一网段。实验平台固化 IP地址 为45,为便于以下的说明,假设实验者配置 Ubuntu的IP地址为 00。(10) 、由于实验平台上仅有/var为可读写路径,因此首先必须切换工作路径 至/var,输入命令如下。# c

8、d /var(11) 、禾I用网络将交叉编译生成的目标文件shouhu_a下载至实验平台,输入以下命令登录FTP服务器。#ftp 00进入FTP服务器后按照提示,输入用户名ftp,密码ftp。(12) 、下载shouhu_a到本地,输入FTP内部命令如下。> get shouhu_a /var/shouhu_a(13) 、待文件传输完成后断开FTP连接,输入FTP内部命令如下。> quit(14) 、查看目标文件shouhu_a属性,输入命令如下。# ls -l检查实验平台的/var/shouhu_a 与Ubuntu的/home/ftp/teat_a文件大小

9、是否一致,如不一致,则需重新登录 FTP服务器进行下载。(15) 、如shouhu_a无可执行权限,则需添加可执行权限,输入命令如下。# chmod a+x shouhu_a(16) 、执行shouhu,输入命令如下。# ./shouhu a(17) 、启动syslogd的守护进程,通过syslog记录事件,输入命令如下。# syslog(18) 、再次执行shouhu,输入命令如下。# ./shouhu_a(19) 、改变路径# cd /var/log(19)、查看系统日志文件# vi messages如果在实验平台的显示器上显示如图一所以结果,则实验成功;JjtnJan Jan Jdn J

10、in Jan 皿S sysloy. iTito aysloBd stvted: Dublin uiM IZ«5.«A3- S danoF,切切 Bic2_lnfol-tt1 】:S 血mOILlufU CBciJflfolttll:S dacKin.lifD excZJ詁口袈3】:I ee:3ff:1 鹽 Ml:1 96;弘:1 00:钳:031 鮒呵7:01iactton lTifD(Hci2_lnh»(W1 f1 eei47:Il flRHeeY eflemjnjnro «c2_lntoH7e):1AflI-«9-3 扭onn.lnhl T

11、诚魅勺班ddliZ uHl sleep 血 ifc cMHZ is sUnf ta mW cMMi naUwi 皿七 chnJZ chllAZ bitll il«T 他 Ws cMUZ Ls golig to exUt chi Ml mtlcel tMt chllC五、思考题1.说明创建一个守护进程的基本过程。答:.调用图一正确记录创建子进程,父进程退出在子进程中创建新的会话setsid ()函数,作用有三个,让进程摆脱原会话的控制;让进程摆脱 原进程组的控制;让进程摆脱原控制终端的控制,这里需要介绍进程组和会话组 的概念;进程组:是一个或多个进程的集合,由进程组ID来唯一标识,进程

12、组组长的 进程号等于该进程组的ID,且组长进程的退出不会影响该ID。会话组:由一个或多个进程组构成,一个会话开始于用户登录,终止于用户退出,在此期间该用户运行的所有进程都属于这个会话。虽然经过第一步,但是子进程完全拷贝父进程的东西,导致,原先的会话期,进程组,控制终端没有变 化,因此,还不算真正的脱离开来,而 setsidO函数可以让进程完全独立开来。(3) .改变当前目录为根目录使用fork创建的子进程继承了父进程的工作目录,导致当前工作目录不能卸 载,可能造成一些麻烦通常都是让根目录为守护进程的当前目录,用函数chdir();(4) .重设文件权限掩码文件权限掩码指屏蔽掉文件权限中的对应位,比如一个文件的权限掩码是050,就屏蔽了文件组拥有者的可读和可执行权限,子进程继承了父进程的一切 东西,当然也包括权限掩码,导致子进程是用文件有诸多麻烦,因此把文件权限掩码设置为零,就可以增加该守护进程的灵活性。(5) .关闭文件描述符同权限掩码一样,子进程继承了父进程的一些打开的文件, 这些文件可能子进 程永远也用不到,但是它们一样消耗系统资源,而且导致所在的文件系统无法卸 载。2. 说明setsid函数的作用。进程从它的双亲进程获得它的对话过程和进程组识别号。setsidO就是将进程和它当前的对话过程和进程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论