欢迎来到天天文库
浏览记录
ID:57279428
大小:73.96 KB
页数:3页
时间:2020-08-08
《实验7-编写守护进程.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、南昌大学实验报告学生姓名:王维学号:专业班级:网工121班实验类型:□验证□综合□设计□创新实验日期:4/30实验成绩:一、实验项目名称实验七:编写守护进程二、实验目的通过编写一个完整的守护进程,使读者掌握守护进程编写和调试的方法,并且进一步熟悉如何编写多进程程序。三、实验内容在该实验中,读者首先建立起一个守护进程,然后在该守护进程中新建一个子进程,该子进程暂停10s,然后自动退出,并由守护进程收集子进程退出的消息。在这里,子进程和守护进程的退出消息都在系统日志文件(例如“/var/log/messages”,日志文件的全路径名因
2、版本的不同可能会有所不同)中输出。子进程退出后,守护进程循环暂停,其间隔时间为10s。图实验7..2流程图四、实验步骤(1)画出该实验流程图。该程序流程图如图所示。(2)实验源代码。具体代码设置如下:/*daemon_proc.c*/#include#include#include#include#include#includeintmain(void){pid_tchild1,child2;inti;/
3、*创建子进程1*/child1=fork();if(child1==-1){perror("child1fork");exit(1);}elseif(child1>0){exit(0);/*父进程退出*/}/*打开日志服务*/openlog("daemon_proc_info",LOG_PID,LOG_DAEMON);/*以下几步是编写守护进程的常规步骤*/setsid();chdir("/");umask(0);for(i=0;i4、ork();if(child2==1){perror("child2fork");exit(1);}elseif(child2==0){/*进程child2*//*在日志中写入字符串*/syslog(LOG_INFO,"child2willsleepfor10s");sleep(10);syslog(LOG_INFO,"child2isgoingtoexit!");exit(0);}else{/*进程child1*/waitpid(child2,NULL,0);syslog(LOG_INFO,"child1noticedthatc5、hild2hasexited");/*关闭日志服务*/closelog();while(1){sleep(10);}}}(3)运行该程序。(4)等待10s后,以root身份查看系统日志文件(例如“/var/log/messages”)。(5)使用ps–ef6、grepdaemon_proc查看该守护进程是否在运行。一、实验结果(1)用cat/var/log/message查看系统日志文件中有类似如下的信息显示:可以从时间戳里清楚地看到child2确实暂停了10s。(2)使用命令ps–ef7、grepdaemon_proc可看到如下结果8、:二、实验心得了解到了守护进程的概念,即在后台运行不占用终端的一个进程。并学到了如何编写一个守护进程的程序。学习到了使用syslog函数打印系统日志,该日志可以到/var/log/message文件中查看。
4、ork();if(child2==1){perror("child2fork");exit(1);}elseif(child2==0){/*进程child2*//*在日志中写入字符串*/syslog(LOG_INFO,"child2willsleepfor10s");sleep(10);syslog(LOG_INFO,"child2isgoingtoexit!");exit(0);}else{/*进程child1*/waitpid(child2,NULL,0);syslog(LOG_INFO,"child1noticedthatc
5、hild2hasexited");/*关闭日志服务*/closelog();while(1){sleep(10);}}}(3)运行该程序。(4)等待10s后,以root身份查看系统日志文件(例如“/var/log/messages”)。(5)使用ps–ef
6、grepdaemon_proc查看该守护进程是否在运行。一、实验结果(1)用cat/var/log/message查看系统日志文件中有类似如下的信息显示:可以从时间戳里清楚地看到child2确实暂停了10s。(2)使用命令ps–ef
7、grepdaemon_proc可看到如下结果
8、:二、实验心得了解到了守护进程的概念,即在后台运行不占用终端的一个进程。并学到了如何编写一个守护进程的程序。学习到了使用syslog函数打印系统日志,该日志可以到/var/log/message文件中查看。
此文档下载收益归作者所有