贵州大学计算机科学与技术学院实验报告Linux系统实验名称进程通信.docx
-
资源ID:371768
资源大小:23.52KB
全文页数:4页
- 资源格式: DOCX
下载积分:5金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
贵州大学计算机科学与技术学院实验报告Linux系统实验名称进程通信.docx
贵州大学计算机科学与技术学院实验报告院(系)名称计算机科学与技术学院班级人工智能2001课程名称Linux系统实验名称进程通信日期2022年11月14日星期四指导教师王以松学号、姓名沈军豪成绩(10分制):批改日期:1.实验名称进程通信2.实验目的熟悉LimIX进程之间信号、管道、消息队列(信号量、共享内存)等通信的实现方法。编译、运行程序并分析结果rootiZ2ze3k5k6130t7ge5yaiaZ#visig-l.croot0iZ2ze3k5k613t7ge5yaiaZgccsig-l.c-osig-1rootiZ2ze3k5k6130t7ge5yaiaZ#./sig-1人CChiIdprocess2iskilledbyparent!childprocess1iskilledbyparent!parentprocessiskilled!rootiZ2ze3k5k6130t7ge5yaiaZ#如果把参考程序SignaI(SIGINT,stop)放在*(1)*/和/*/位置,结果会怎样并分析原因。root0iZ2ze3k5k613t7ge5yaiaZ#gccsig-l.c-osig-2root0iZ2ze3k5k6130t7ge5yaiaZ#./sig-2Cchildprocess2iskilledbyparent!parentprocessiskilled!root0iZ2ze3k5k6130t7ge5yaiaZ该程序段前面部分用了两个Wait(O),为什么?因为有两个子进程(4)该程序段中每个进程退出时都用了语句exit(0),为什么?为了使子进程正常退出,并不影响父进程的执行root0iZ2ze3k5k6130t7ge5yaiaZ#./createfifoUsage:./createfifo<filename>root(3iZ2ze3k5k613t7ge5yaiaZ#./createfifotmpf1root(3iZ2ze3k5k613t7ge5yaiaZ#ll/tmp-bash:ll/tmp:Nosuchfileordirectoryroot(3iZ2ze3k5k6130t7ge5yaiaZ#Iltmptotal8-rw1rootroot0Nov1513:22AliyUnASSiStClientSingIprw-r-r1rootroot0Nov2006:55fldrwx3rootroot4096Nov1513:27systemd-private-14c3dbl543e3f88a-chronyd.service-ER9Kfhdrwx2rootroot4096Nov1513:35tmp.NocWjxt2r2root(3iZ2ze3k5k613t7ge5yaiaZ#root(0iZ2ze3k5k6130t7ge5yaiaZ#./read_fifotmpf1openfifo./read_fifoforreadingsuccessed.read19bytesfromfifo:hello,goodmorningread15bytesfromfifo:hoedoyoudo?rootiZ2ze3k5k6130t7ge5yaiaZ#.writefifotmpf1hello,goodmorningopenfifo./write_fifoforwrittingsuccessed.hoedoyoudo?#在读管道端按下ctrl+C,写端仍然处于打开状态,写端继续输入任何字符,则会收到SIGPIPE信号,表示管道已断开:root0iZ2ze3k5k613Ot7ge5yaiaZ#./write_fifotmpf1openfifo./write_fifoforwrittingsuccessed.hjxhfdcjCaughtsignal13write()failedonfifo:Brokenpiperoot0iZ2ze3k5k613t7ge5yaiaZ#root0iZ2ze3k5k613t7ge5yaiaZ#echohello>tmpf2rootiZ2ze3k5k613t7ge5yaiaZ#root(piZ2ze3k5k613t7ge5yaiaZ#cattmpf2hellorootiZ2ze3k5k6130t7ge5yai.aZ#cattmpf2#将写端程序的signal(SIGPIPE,signal_handler)替换为SignaI(SIGPIPE,SIGJGN),并将FlXME后的break语句注释,重新编译运行,在读管道端关闭后,写管道端继续写,重新打开读管道端,发现会丢失在管道断开期间写管道端写入的内容。root0iZ2ze3k5k6130t7ge5yaiaZ#./write_fifotmpf2helloopenfifo.writefifoforwrittingsuccessed.rootiZ2ze3k5k6130t7ge5yaiaZ#./read_fifotmpf2openfifo./read_fifoforreadingsuccessed.read6bytesfromfifo:helloCroot(3iZ2ze3k5k6130t7ge5yaiaZ#./read_fifotmpf2openfifo./read_fifoforreadingsuccessed.基于共享内存的进程通信root0Z2ze3k5k613Ot7ge5yaiaZ#./shmwritepleaseinput:hellopleaseinput:howareyouCroot(3iZ2ze3k5k613t7ge5yaiaZ#./shmreadmessagefromshm:howareyourootiZ2ze3k5k613t7ge5yaiaZ#ipcs-mnattchSharedMemorySegmentskeyshmidownerpermsbytesOx61lO001root6661028rcc+Ai7l7qrRLA1RG7cRa$a7liIttttt开多个终端,同时运行上面的Shmead和Shmwrite,根据输出结果分析原因只有一个write和read有可以正常运行因为只要有一个进程申请写共享空间,其他写进程就会进入等待状态,只有第一个写进程结束,后面的一个写进程才能运行