第五次实验报告(共4页).docx

上传人:飞****2 文档编号:13390149 上传时间:2022-04-29 格式:DOCX 页数:4 大小:17.13KB
返回 下载 相关 举报
第五次实验报告(共4页).docx_第1页
第1页 / 共4页
第五次实验报告(共4页).docx_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《第五次实验报告(共4页).docx》由会员分享,可在线阅读,更多相关《第五次实验报告(共4页).docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上第五次实验报告一、 实验目的:1、掌握进程相关的基本概念;2.掌握Linux 下的进程结构;3、掌握Linux 下进程创建及进程管理;4、掌握Linux 下进程创建相关的系统调用;5、掌握守护进程的概念;6、掌握守护进程的启动方法;7、掌握守护进程的输出及建立方法;8、学会编写多进程程序;9、学会编写守护进程。二、实验内容:1、该实验有3个进程,其中一个为父进程,其余两个是该父进程创建的子进程,其中一个子进程运行“ls -l”指令,另一个子进程在暂停5s 之后异常退出,父进程并不阻塞自己,并等待子进程的退出信息,待收集到该信息,父进程就返回。2、在该实验中,读者首先建

2、立起一个守护进程,然后在该守护进程中新建一个子进程,该子进程暂停10s,然后自动退出,并由守护进程收集子进程退出的消息。在这里,子进程和守护进程的退出消息都在“/var/log/messages”中输出。子进程退出后,守护进程循环暂停,其间隔时间为10s。三、实验步骤:1、(1)编写代码:#include #include #include #include #include int main(void)pid_t child1,child2,child;/*创建两个子进程*/child1 = fork();child2 = fork();/*子进程1的出错处理*/if( child1 = -

3、1 )perror(child1 fork);exit(1);/*在子进程1中调用execlp函数*/else if( child1 = 0 )printf(In child1: execute ls -ln);if(execlp(ls,ls,-l,NULL)0)perror(child1 execlp);/*子进程2的出错处理*/if( child2 = -1 )perror(child2 fork);exit(1);/*在子进程2中使其暂停5s*/else if( child2 = 0 )printf(In child2: sleep for 5 seconds and then exit

4、n);sleep(5);exit(0);/*在父进程中等待子进程2的退出*/elseprintf(In father process:n);dochild = waitpid( child2, NULL, WNOHANG );if( child =0 )printf(The child2 process has not exited!n);sleep(1);while( child = 0 );if( child = child2 )printf(Get child2n);elseprintf(Error occured!n);(2)首先在宿主机上编译调试该程序:rootlocalhost p

5、rocess# gcc exc.c o exc(3)在确保没有编译错误后,使用交叉编译该程序:rootlocalhost process# arm-linux-gcc exc.c o exc(4)将生成的可执行程序下载到目标板上运行。2、(1)编写代码:/*exc2.c实验二源码*/#include #include #include #include #include #include #define MAXFILE 65535int main(void)pid_t child1,child2;int i;child1 = fork();/*创建子进程1*/if( child1 = -1 )

6、perror(child1 fork);exit(1);else if( child1 0 )exit( 0 );/*打开日志服务*/openlog(exc2_info, LOG_PID, LOG_DAEMON);/*以下几步是编写守护进程的常规步骤*/setsid();chdir( / );umask( 0 );for( i = 0 ; i MAXFILE ; i+ )close( i );/*创建子进程2*/child2 = fork();if( child2 = -1 )perror(child2 fork);exit(1);else if( child2 = 0 )/*在日志中写入字符

7、串*/syslog( LOG_INFO, child2 will sleep for 10s );sleep(10);syslog( LOG_INFO, child2 is going to exit! );exit(0);elsewaitpid( child2, NULL, 0);syslog( LOG_INFO , child1 noticed that child2 has exited );/*关闭日志服务*/closelog();while(1)sleep(10);(2)由于有些嵌入式开发板没有syslog服务,读者可以在宿主机上编译运行。rootlocalhost process#

8、 gcc exc2.c o exc2(3)运行该程序。(4)等待10s后,以root 身份查看“/var/log/messages”文件。(5)使用ps ef|grep exc2 查看该守护进程是否在运行。四、实验结果:1、root(none) 1# ./excIn child1: execute ls -lIn child1: execute ls -lIn child2: sleep for 5 seconds and then exittotal 57-rwxr-xr-x 1 root root 14443 Jan 31 2006 exc-rwxr-xr-x 1 root root 13

9、512 Jan 29 2006 exit-rwxr-xr-x 1 root root 13956 Jan 29 2006 fork-rwxr-xr-x 1 root root 13999 Jan 30 2006 waitpidtotal 57-rwxr-xr-x 1 root root 14443 Jan 31 2006 exc-rwxr-xr-x 1 root root 13512 Jan 29 2006 exit-rwxr-xr-x 1 root root 13956 Jan 29 2006 fork-rwxr-xr-x 1 root root 13999 Jan 30 2006 wait

10、pidIn father process:The child2 process has not exited!The child2 process has not exited!The child2 process has not exited!The child2 process has not exited!The child2 process has not exited!Get child22、(1)在“/var/log/messages”中有类似如下的信息显示:Jan 31 13:59:11 localhost exc2_info5517: child2 will sleep for

11、 10sJan 31 13:59:21 localhost exc2_info5517: child2 is going to exit!Jan 31 13:59:21 localhost exc2_info5516: child1 noticed that child2 hasexited从时间戳里清楚地看到child2 确实暂停了10s。(2)使用命令ps ef|grep exc2可看到如下结果:root 5516 1 0 13:59 ? 00:00:00 ./exc2可见,exc2 确实一直在运行。五、实验心得:通过本节实验,我理解了进程的基本概念及Linux下进程的基本结构、模式与类型以及Linux 进程管理。进程是Linux 中程序运行和资源管理的最小单位,对进程的处理也是嵌入式Linux应用编程的基础,所以必须掌握它。并且掌握了fork 函数和exec 函数族和他们的区别。同时学会了Linux 守护进程的编写,包括守护进程的概念、编写守护进程的步骤以及守护进程的出错处理。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁