操作系统实验课程设计.docVIP

  • 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 将字符串写入管道 从管道读字符串 转换成大写 输出 管 道

文档评论(0)

1亿VIP精品文档

相关文档