如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验五:管道通信实验内容:阅读以下程序:#include<unistd、h>#include<stdio、h>#include<stdlib、h>main(){int[2];charbuffer[80];if(pipe()<0)//建立管道,[0]为管道里得读取端,[1]则为管道得写入端//成功则返回零,否则返回-1,错误原因存于errno中err_quit(“pipeerror”);if(fork()>0){chars[]=“hello!\n";close([0]);//关闭[0]文件write([1],s,sizeof(s));//s所指得内存写入到[1]文件内close([1]);//关闭[0]文件}else{close([1]);read([0],buffer,80);//把[0]文件传送80个字节到buffer缓冲区内printf(“%s”,buffer);close([0]);}}编译并运行程序,分析程序执行过程与结果,注释程序主要语句。阅读以下程序:#include〈sys/types、h>#include<sys/stat、h>#include〈fcntl、h〉main(){charbuffer[80];intfd;unlink(FIFO);//删除FIFO文件mkfifo(FIFO,0666);ﻩ//FIFO就是管道名,0666就是权限if(fork()〉0){chars[]=“hello!\n";fd=open(FIFO,O_WRONLY);//以只写方式打开文件FIFOwrite(fd,s,sizeof(s));//把字符数组s得内存写入sizeof(s)个字节到参数fd所指得文件内close(fd);//关闭该文件,close()会让数据写回磁盘,并释放该文件所占用得资源}else{fd=open(FIFO,O_RDONLY);read(fd,buffer,80);printf(“%s”,buffer);close(fd);}}ﻩ编译并运行程序,分析程序执行过程与结果,注释程序主要语句。阅读以下程序:#include<stdio、h〉main(){FILE*fp;charbuffer[80];fp=popen(“cat/etc/passwd",”r”);/*调用fork()产生子进程,然后从子进程中调用/bin/sh-c来执行cat/etc/passwd。参数“r"代表读取,popen()会建立管道连到子进程得标准输出设备或标准输入设备,然后返回一个文件指针。*/fgets(buffer,sizeof(buffer),fp);//从fp文件中读取sizeof(buffer)—1个字符到bufferprintf(“%s",buffer);pclose(fp);//关闭文件fp}ﻩ编译并运行程序,分析程序执行过程与结果,注释程序主要语句。