操作系统实验报告-实验五.doc
实验五:管道通信实验内容: 1. 阅读以下程序:#inclde <unist、h>ildstio、hinetdi、>mai()it 2;harbue80;f(pie() /建立管道,0为管道里得读取端,1则为管道得写入端/成功则返回零,否则返回-1,错误原因存于erno中r_qui(“ie error”);if(fork()>0)chr s = “helo!n";cse(0); 关闭文件wte(1,s,sizeof(s); /s所指得内存写入到1文件内clos(); /关闭0文件esecoe(1);read(0,fr,); /把0文件传送0个字节到bufer缓冲区内printf(“s”,buer);clse(0);编译并运行程序,分析程序执行过程与结果,注释程序主要语句。2. 阅读以下程序:#inludesytes、hinclude<sy/stat、h>inldfcnl、an()char bffer80;in fd;unlik(FIFO); /删除FIFO文件kfio(FFO,066);/FIF就是管道名,06就是权限i(frk()chr =“e!n"fd = ope (FIF,O_WRONLY); /以只写方式打开文件IOrt(fd,s,sizeof();/把字符数组s得内存写入sizef(s)个字节到参数fd所指得文件内lose(fd); /关闭该文件,close()会让数据写回磁盘,并释放该文件所占用得资源lef pen(FI,ORDOLY);read(d,buffer,0);pintf(“s”,bufer);coe(fd); 编译并运行程序,分析程序执行过程与结果,注释程序主要语句。3. 阅读以下程序:nclud<stdo、an()FIE *p;har bfr0;fp=popen(“cat /etc/passwd",”r”);/*调用fork()产生子进程,然后从子进程中调用/bi/shc来执行at/etc/passwd。参数“"代表读取,pope()会建立管道连到子进程得标准输出设备或标准输入设备,然后返回一个文件指针。*fets(buf,iof(bufer),fp); /从fp文件中读取iof(buffr)1个字符到buerprinf(“%s",buffr);pclos(fp); /关闭文件fp编译并运行程序,分析程序执行过程与结果,注释程序主要语句。