河北工业大学操作系统实验报告linux - 和windows部分
更新时间:2023-11-06 13:18:01 阅读量: 教育文库 文档下载
- 河北工业大学操作系统期末推荐度:
- 相关推荐
软件c122郭嵘峥 125448
操作系统实验报告
2.3 Linux并发程序设计
(实验估计时间:90分钟)
? 背景知识 ? 实验目的
? 工具/准备工作 ? 实验内容与步骤
背景知识
管道是Linux中最常用的进程间通信IPC机制。利用管道时,一个进程的输出可成为另外一个进程的输入。当输入输出的数据量特别大时,这种IPC机制非常有用。可以想象,如果没有管道机制,而必须利用文件传递大量数据时,会造成许多空间和时间上的浪费。
在Linux中,通过将两个file结构指向同一个临时的索引节点,而两个索引节点又指向同一个物理页而实现管道。 实验目的
1) 通过在Linux进程之间进行的通信实例来学习并发程序设计的方法。 2) 通过Linux进程通信的程序设计与实现,进一步熟悉操作系统的进程概念,理解Linux进程管理概念。
3) 通过阅读和分析Linux实验程序,学习Linux程序设计、调试和运行的方法。 工具/准备工作
在开始本实验之前,请回顾教科书的相关内容。 需要准备一台运行Linux操作系统的计算机。 实验内容与步骤
并发程序的设计关键是使用创建进程的系统调用,使一个程序运行时可以生成几个同时运行的程序,如果程序中没有创建进程的动作则为顺序程序设计。
本实验中的并发程序例子完成两个程序child和father之间的数据传递工作,具体做法分为四步。
步骤1:编制并发程序pipeline.c。
单击红帽子,在“GNOME帮助”菜单中单击“附件”-“文本编辑器”命令,在文本编辑中键入程序并保存为pipeline.c。
软件c122郭嵘峥 125448
在该程序中定义管道和文件描述符,并且创建子进程child。该程序用到的系统调用有pipe() 、dup() 、fork() 、close、execl() 、exit,它们的功能分别是建立管道、复制文件描述符、创建进程并使子进程与父进程有相同的程序正文、关闭文件描述符、用指定文件覆盖调用程序、撤销当前进程。
清单4-5 pipeline.c
// 定义管道程序
# define STD_INPUT 0 // 定义标准输入设备描述符 # define STD_OUTPUT 1 // 定义标准输出设备描述符
int fd[2];
main() {
static char process1[]=\
pipe(fd); // 定义管道 pipeline(process1,process2); // 调用自定义函数pipeline() exit(1); // 程序结束
}
pipeline(char* process1,char* process2) {
int i; while ((i=fork())==-1); // 创建进程,直到创建成功为止 if (i) { close(fd[0]); // 关闭管道输入描述符 close(STD_OUTPUT); // 关闭标准输出描述符1 dup(fd[1]); // 指定标准输出描述符1为管道写指针 close(fd[1]); // 关闭原始管道写指针
execl(process1, process1, 0); // 用程序father覆盖当前程序
printf(\ // execl()执行失败 } else { close(fd[1]); // 关闭管道输出描述符 close(STD_INPUT); // 关闭标准输入描述符0 dup(fd[0]); // 指定标准输入描述符0为管道读指针 close(fd[0]); // 关闭原始管道读指针 execl(process2,process2,0); // 用程序child覆盖当前程序 printf(\ // execl()执行失败 } exit(2); // 程序结束
}
步骤2:编制“管道写”程序father.c作为父进程的一部分工作。其内容如下:
单击红帽子,在“GNOME帮助”菜单中单击“附件”-“文本编辑器”命令,在文本编辑中键入程序并保存为father.c。
清单4-6 father.c
main() {
static char string[] = “Parent is using pipe write.” ; int len;
len = sizeof(string) ; write(l, string, len) ; /* 将string中的内容写入管道中 */ printf(“parent, parent, parent \\n \\n \\n” ) ; exit(0) ; }
步骤3:编制“管道读”程序child.c作为子进程的一部分工作。其内容如下:
单击红帽子,在“GNOME帮助”菜单中单击“附件”-“文本编辑器”命令,在文本编辑中键入程序并保存为child.c。
清单4-7 child.c
软件c122郭嵘峥 125448
main() {
char output[30] ;
read (0, output, 30) ; /* 从管道中读数据并存入output中 */ printf(“%s \\n child, child. \\n” , output) ; return(0) ; }
步骤4:编译。
cc –o child child.c cc –o father father.c cc –o pipeline pipeline.c 步骤5:运行。
./pipeline 若运行不成功,则应该用文本编辑器对源程序进行修改调试。
2.4 Linux重定向和管道
(实验估计时间:90分钟)
? ? ? ? ?
背景知识 实验目的
工具/准备工作 实验内容与步骤 可选练习
背景知识
在本实验中,我们将使用高级Linux命令来完成重定向和管道。每一个Linux命令都有一个源作为标准输入,一个目的作为标准输出。命令的输入通常来自键盘 (尽管它也可以来自文件) 。命令通常输出到监视器或者屏幕上。Linux计算环境使用重定向可以控制命令的I/O。当试图把命令的输出保存到一个文件,以供以后查看的时候是很有用的。通过管道,可以取得一个命令的输出,把它作为另一个命令的进一步处理的输入。
有几个元字符可用于输入/输出重定向符号:输出重定向使用右尖括号 (>,又称大于号) ;输入重定向使用左尖括号 (<,又称小于号) ;出错输出重定向使用右尖括号之前有一个数字2 (如2>) 。本实验重点在输出重定向。
重定向命令的格式是:
Command Redirection-Symbol File (text file or device file)
标准输出比标准输入或标准出错更经常被重定向。许多命令,如ls、cat、head和tail产生标准输出到屏幕上,常常会希望把这个输出重定向到一个文件中,以便将来查看、处理或者打印。通过替换文件名,可以截获命令的输出,而不是让它到达默认的监视器上。
最强大的元字符之一是管道符号 (|) 。管道取得一个命令的标准输出,把它作为标准输入传递给下一个命令 (通常为more命令、lp (行式打印机) 命令或者一个文件处理命令,如grep或sort) 。必须在管道的每边都有一个命令,命令和管道之间的空格是可选的。
管道命令的格式是: command | command 实验目的
通过重定向和管道操作:
软件c122郭嵘峥 125448
1) 熟悉输入/输出 (I/O) 重定向; 2) 把标准输出重定向创建一个文件; 3) 防止使用重定向的时候覆盖文件; 4) 把输出追加到一个现有的文件中;
5) 把一个命令的输出导入到另一个命令中。 工具/准备工作
在开始本实验之前,请回顾教科书的相关内容。 您需要做以下准备:
1) 由指导老师分配的登录用户名 (如user2) 和口令。
2) 一台运行Red Hat Linux操作系统,带有GNOME的计算机。 实验内容与步骤
1. 使用重定向标准输出符号 2. 使用管道符号
在本实验中将会用到下列命令: pwd: 显示当前的工作路径。 cd: 改变目录路径。 ls: 显示指定目录的内容。 more: 分页显示文件的内容。这是用于显示文本文件的首选方法。 head: 截取显示文件的开头部分 (默认为开头10行) 。 tail: 截取显示文件的结尾部分 (默认为最后10行) 。 cal: 有关日历的命令。 set: shell特性的设置。 echo: 显示变量的值。 ps: 显示当前进程。 data: 显示或设置系统日期和时间。 grep: 查找文件中有无指定的关键字。
提示:如果对命令的格式不清楚,可以用man命令请求帮助,即: man more
步骤1:开机,登录进入GNOME。
在GNOME登录框中填写指导老师分配的用户名和口令并登录。 步骤2:访问命令行。
单击红帽子,在“GNOME帮助”菜单中单击“系统工具”-“终端”命令,打开终端窗口。
1. 使用重定向标准输出符号
步骤3:重定向标准输出,创建一个文件。
右尖括号或称大于符号 (>) 把命令的输出发送到一个文件中:使用单个右尖括号,当指定文件名不存在的时候,将创建一个新文件;如果文件名存在,它将被覆盖。(注意:命令、重定向符号和文件名之间的空格是可选的) 。
软件c122郭嵘峥 125448
重定向标准输出命令的格式是: command > file
1) 为核实当前所在目录位置,使用什么命令? pwd
如果当前位置不在主目录中,使用什么命令可以改变到主目录中? cd /_
2) 如果希望把文件和目录列表截获,存储为主目录中的一个文件,这样可以追踪主目录中有什么文件。使用什么命令,把长文件列表的输出重定向,创建一个叫做homedir.list的文件。 ls >homedir.list_
3) 新文件homedir.list被放在哪里?
根目录_ 使用ls命令核实新文件存在。
4) 使用什么命令,以一次一屏的方式,来查看刚才创建的文件内容? _ls –l|more homedir.list 5) 使用head命令截获homedir.list文件的前10行,通过重定向,创建一个叫做dhomedir.list-top-10的新文件。应该使用什么命令?
head –10 homedir.list >dhomedir.list-tail-10 使用more命令查看文件的内容。
6) 使用tail命令,截获homedir.list文件的最后10行,通过重定向,创建一个叫做dhomedir.list-top-10的新文件。使用什么命令?
tail –10 homedir.list >dhomedir.list-top-10
使用more命令查看文件的内容。
7) 截获cal -y命令的输出,把它存到名为calendar的文件中。查看文件的内容。截获了什么
cal –y>calendar |more calendar 截获了2011年12个月份的日历
8) 截获cal 2010命令的输出,把它存到名为calendar的文件中。查看文件的内容。其中有什么内容?
cal -y 2010 > calendar |more calendar 2010年12月份的日历 日历有什么变化?
不是2011年,变成2010年了 步骤4:防止使用重定向的时候覆盖文件。 在bash shell中,一个叫做noclobber的选项可以用来设定防止在重定向的过程中覆盖文件。可以在命令行中使用$set -o noclobber命令来完成。o代表选项。
为了重新激活clobber特性,使用$set -o noclobber;撤消则用set +o noclobber。
如果你使用的是csh shell,为了激活/撤消C shell中的clobber特性,使用set noclobber和unset noclobber。
1) 输入命令,打开shell中的noclobber选项。输入什么命令?
set –o noclobber_ 2) 输入命令ls -l > homedir.list,结果是什么? bash:homedir.list:cannot overwrite existing file.因为clobber选项防止了 重定向过程覆盖文件___________________________________
3) 输入命令ls -l > homedir.list2,结果是什么?
不能重定向成功 步骤5:向现有的文件追加输出。
如果想向一个现有的文件追加 (添加到末尾) 文本而不是覆盖它,可以使用双右尖括号 (>>) 。这个选项当文件不存在的时候,会创建一个新文件,或者追加到已有文件。
追加命令的格式是:
正在阅读:
河北工业大学操作系统实验报告linux - 和windows部分11-06
高级程序语言课程设计题及参考资料new11-03
2005年初级经济师房地产经济专业知识与实务真题-中大网校08-18
行业研究报111-17
公司近三年财务报表分析报告01-15
2022秋高中化学人教版选修4达标训练:第三章第一节弱电解质的电04-05
公司各职务岗位职责03-05
Linux平台WEB服务器搭建07-28
双嘴气球充气泵项目可行性研究报告(发改立项备案+2013年最新案05-03
清晨的音乐家作文600字07-11
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 河北
- 工业大学
- 操作系统
- windows
- 实验
- 部分
- 报告
- linux
- 我国对外贸易地区分布与贸易结构现状分析
- 车床专业英语翻译
- 2012届高三化学一轮复习 2.3化学平衡状态教学案 苏教版
- wqs数字式人体脉搏器的设计
- 餐桌上的礼仪
- 股票指标公式下载-神秘买点(附图)
- 数据库实验报告
- 2018年广东省普通高中化学学业水平测试复习专题十四 化学与技术(选考)
- 在线教育林业建设项目可研编制规定
- 4.护骨胶囊对成骨细胞增殖、分化影响 - 图文
- 2017-2022年晋宁县体育小镇市场前景调查及投资咨询报告(目录) - 图文
- 圆系方程的简单应用
- 大体积砼的抗裂计算
- TOEFL听力加考内容( 三)
- 北师大版二年级数学上册应用题汇总
- 邮政管理局六大测评要素之应变能力精选面试真题及解析
- 15秋西南交大《电子技术基础》在线作业二 答案
- 恒大地产集团招投标管理制度(2015年发文版)
- 房地产行业分析框架
- 那些被“破格录取”的名人