- 6
- 0
- 约1.39千字
- 约 4页
- 2016-11-26 发布于重庆
- 举报
操作系统实验课程设计
操作系统实验课程设计(一)
学院:计算机科学与工程 专业:信息管理与信息系统
学号:2008142101 姓名:史洪升
一、实验题目:进程的管道通讯
二、 实验目的:
掌握进程的管道通讯机制和信号量同步互斥机制。
三、实验要求
编制一个程序,程序中创建一个子进程。然后父子进程各自独立运行,父进程不断地在标准输入设备上读入小写字母,写入管道。子进程不断地从管道中读取字符,转换为大写字母后输出到标准输出设备上。当读到x时,结束。
四、实验思路
1算法思想
创建一个管道,得到两个文件描述符,一个分配给父进程用于向管道写数据,一个分配给子进程用于从管道读数据。当父进程在运行时,关闭读数据一端,让子进程进入阻塞;因为父进程写数据是通过getchar()实现的,当输入回车时,该函数不能得到字符,这时子进程得以运行,关闭写端口,使父进程进入阻塞,从管道读取数据,并把小写字母转换成大写字母后输出。这样就实现了父进程和子进程轮流运行,以写一行就读一行的形式显示程序结果。
2系统调用:read,write
五、程序流程图:
六、程序代码:
#include unistd.h
#include signal.h
#include stdio.h
#includemath.h
int pid1;
void main()
{
int fd[2];
int i,j;
int l;
char outpipe[100];
char s1[100];
pipe(fd); /*创建一个管道*/
while ((pid1=fork())==-1);
if(pid1==0)
{
for(i=0;s1[i-1]!=x;i++) //从键盘上输入字符串
scanf(%c,s1[i]);
l=i-1; //记录字符串长度
for(i=0;il;i++)
s1[i]=s1[i]-32;
lockf(fd[1],1,0); // 加锁
write(fd[1],s1,l); /*向管道写字节串s1*/
lockf(fd[1],0,0); //解锁
exit(0);
}
else
{
read(fd[0],outpipe,l); /*从管道中读字符串*/
printf(%s\n,outpipe); //打印
exit(0);
}
}(另将实验代码源程序和目标代码放于192.168.72.11主机中自己的文件夹内,文件名为“你的学号.c”和“你的学号.o”.)
七、实验结论及分析:
1.运行结果
输入字符s1
==’x’ ?
Yes
no
将字符串写入管道
从管道读字符串
转换成大写
输出
管 道
您可能关注的文档
最近下载
- 《知识图谱技术及应用》课程教学大纲.docx VIP
- 第01讲 二次根式的概念(2个知识点+3类热点题型讲练+习题巩固)(解析版).pdf VIP
- 高级英语精品课程教案 TheFutureoftheEnglish.pdf VIP
- 34-知识图谱-0415000101-教学大纲.pdf VIP
- 2026-2031不干胶标签市场调查报告.docx VIP
- 胃轻瘫多学科联合诊疗专家共识(2025版).pptx VIP
- 知识图谱教学大纲.docx VIP
- 人教版(新版)三年级下册数学全册教案(完整版)教学设计含教学反思.docx
- 苏教版2026-2027学年七年级下册生物教学工作计划(及进度表).docx
- 装潢材料公司采购员述职报告.docx VIP
原创力文档

文档评论(0)