《2023年操作系统实验报告实验五.docx》由会员分享,可在线阅读,更多相关《2023年操作系统实验报告实验五.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验五:管道通信实验内容:1 .阅读以下程序:# i nc 1 u de # inc 1 ud e # i n c I ude m a i n()(i n t f i led e s2;c har buff e r 80;i f (pip e (filed e s)0)ch a r s = M h ell o !n”;c 1 ose(fil e d e s 0); / / 关闭 filede s 0文献w r ite(file d esl,s,s i zeo f (s): s 所指的内存写入到 f i 1 e d es 1文献内clo s e (filedes 1);/ / 关闭 filede
2、 s 文献el s eclo s e (filedesl);r e ad( f i Ie des 0,b u ffec80); / / 把 f i ledes 文献传送 80 个字节到buf f e r 缓冲区内 p r intf (%s”, b uf f e r); cl o se(fi 1 e d e s 0);编译并运营程序,分析程序执行过程和结果,注释程序重要语句。#include #include /Include main()(tnt ftledes2;char buffer80;if(ptpe(filedes)0)char s = hello!n;close(filedes0);
3、write(filedesl,s,sizeof(s);close(filedesl);elseclose(ftledesl);read(filedesO,buffer,80);printf buffer);close(ftledes0);)userubuntu:- vi 5-1.c userubuntu:-$ gcc 5-1.c -o 5-1 userubuntu:$ /5-lhello!userubuntu:-$ -/5-l hello!useubuntu:$ ,.阅读以下程序:# i n clude# i n c 1 ude# in c I u d e main () char b u f
4、fer80;i nt f d;un 1 ink (FIFO);删除 FIFO 文献mkf i fo(FlF O, 0666); I3/FIF0 是管道名,06 6 6 是权限if( fork ()0)char s = he 1 lo! n ;f d = open (FIFO,O_WRON LY); / / 以只写方式打开文献 F 1 FOw r it e (fd, s /sizeof(s);/把字符数组s的内存写入sizeo f ( s )个字节到参数f d所指的文献内 close(fd);关闭该文献,dose ()会让数据写回磁盘,并释放该文献所占用的资源 e 1 s efd= open(F
5、I F O, O_RDO N LY);read (fd,buffer,80);printf(%s,buffer);c 1 os e (fd);)编译并运营程序,分析程序执行过程和结果,注释程序重要语句。#tnclude#tnclude#include#tncludemain()char buffer80;int fd;unlink(M5-2M);mkfifo(H5-2H,0666);FIFO:5-2是管道名,0666是权限tf(fork()0)char s = hello!nM;fd = open (H5-2M,O_WRONLY);wrtte(fd,s,sizeof(s);close(fd);
6、elsefd= open(5-2H,0_RD0NLY);read(fd,buffer,80);printf(H%sH,buffer);close(fd);)userubuntu:-$ gcc 5-2.c -o 5-2userubuntu:$ /52 hello!useubuntu:$ ,.阅读以下程序:#includ e main()F I LE * fp;cha r b u ffer80;fp=popen(Mcat/etc/pass wd,r);/*调用fork。产生子进程,然后从子进程中调用/bin/sh -c来执行c at/e t c/p a s swd。 参数代表读取,popen ()
7、会建立管道连到子进程的标准输出设备或标准输入设备, 然后返回一个文献指针。*/fgets( b u f f e r,si z eoffbu f fe r ), f p ); 从 f p 文献中读取 s i z e of( buffe r )-1个字符到buf f erp r i n t f (%s”, b u ffer);pc 1 ose( f p );/ / 关闭文献 fp)编译并运营程序,分析程序执行过程和结果,注释程序重要语句。#includemain()(FILE * fp;char buffer80;fp=popen(cat /etc/passwdM,r);fgets(buffer,stzeof(buffer),fp);printf(%s,buffer);pclose(fp);)