



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>#include <sys/wait.h>int main(void)pid_t child1
3、,child2,child;/*创建两个子进程*/child1 = fork();child2 = fork();/*子进程1的出错处理*/if( child1 = -1 )perror("child1 fork");exit(1);/*在子进程1中调用execlp函数*/else if( child1 = 0 )printf("In child1: execute 'ls -l'n");if(execlp("ls","ls","-l",NULL)<0)perror(&qu
4、ot;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 exitn");sleep(5);exit(0);/*在父进程中等待子进程2的退出*/elseprintf("In father process:n");dochild = waitpid( child
5、2, 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 process# gcc exc.c o exc(3)在确保没有编译错误后,使用交叉编译该程序:rootlocalho
6、st process# arm-linux-gcc exc.c o exc(4)将生成的可执行程序下载到目标板上运行。2、(1)编写代码:/*exc2.c实验二源码*/#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>#include <sys/wait.h>#include <syslog.h>#define MAXFILE 65535int main(void)pid_t child1,child2;int i;c
7、hild1 = fork();/*创建子进程1*/if( child1 = -1 )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*/chil
8、d2 = fork();if( child2 = -1 )perror("child2 fork");exit(1);else if( child2 = 0 )/*在日志中写入字符串*/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
9、 noticed that child2 has exited " );/*关闭日志服务*/closelog();while(1)sleep(10);(2)由于有些嵌入式开发板没有syslog服务,读者可以在宿主机上编译运行。rootlocalhost process# 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 -l
10、'In child1: execute 'ls -l'In 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 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 waitpidtotal 57-rwxr-xr-x 1 root r
11、oot 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 waitpidIn father process:The child2 process has not exited!The child2 process has not exited!The child2 process has not exited!The child2 proces
12、s 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 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 确实一直在运行。五、实验心得
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沥青路面白改黑施工方案
- 日海智能:拟质押日海通服服务有限公司股权涉及其股东全部权益价值项目资产评估报告
- 电动门干挂石材施工方案
- 巴中地下室防潮层施工方案
- 宁乡钢筋套筒施工方案
- 2025年安徽省阜阳市阜阳市重点中学中考一模历史试题(原卷版+解析版)
- 【专精特新】激光雷达企业专精特新“小巨人”成长之路(智研咨询)
- 高中语文学术性论著阅读“四维三层”教学设计体系探究
- 中外美术32讲知到课后答案智慧树章节测试答案2025年春西安工业大学
- 三级人力资源管理师-《企业人力资源管理师(理论知识)》考前强化模拟卷8
- 服装店售后培训课件
- 新旧系统数据迁移方案
- 3D打印与传统工艺美术的融合创新
- 运动损伤预防与处理的案例分析
- 第四次工业革命课件
- nfc果汁加工工艺
- 《中国十大元帅》课件
- 舌癌预防好口腔疾病远离舌癌威胁
- 《微生物限度检查法》课件
- 云南民族民间工艺的分类及其初步研究
- 驾驶员的责任和义务
评论
0/150
提交评论