实验三-进程通信.docxVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
} } 实验三 进程通信 . 实验学时与类型 学时: 2,课外学时:自定 实验类型:设计性实验 . 实验目的 了解 Linux 的软中断、管道、消息队列、共享存储区等进程间通信方式。 . 实验内容 软中断通信机制 (1) 请编写一个程序:循环输出“ how are you? ”,在按下 Ctrl+C 后中断显示,输出 “ Byebye! ”后退出程序。 #include<signal.h> #include<stdio.h> int k=1; void int_func(int sig) // 软中断处理函数 { k=0; } Int main() { signal(SIGINT,int_func);// 预置软中断信号处理函数 While(k==1) Printf( “ how are you?\n ” ); Printf( “ byebye! ” ); Ilo w arc y uu? how arc you? h<jw arc you? how arc you? h<)w arc y Ciu? Iww are you? how arc yon? Ilow arc you? how arc you? h<jw arc you? how arc you? A,然后子进程输出 Bojby ebye ! [ rOG t <j c a 1 hO s A,然后子进程输出 Bo (2)使用信号机制实现父子进程同步,父进程先输出 #in clude<sig nal.h> #in clude<stdio.h> int k=1; void fun c(i nt sig) { k=0; } main () { int pid; pid=fork(); if(pid>0) { printf( “ A\n ” ); kill(pid,12); } else if(pid==0) { sig nal(12,fu nc); while(k==1) sleep(1); printf( “ B\n ”); } } [rao oca Iho s i zzw] , / 12 A 通过管管道机制 通过管 (1)父子进程通过管道传送一串字符。 要求:子进程随机从键盘输入一串字符, 道发给父进程,父进程从管道中将消息读出并显示出来。 #in clude<stdio.h> #in clude< uni std.h> main () { in t pid, fd[2]; char outpipe[50], in pipe[50]; pipe(fd); pid=fork(); if (pid==0) { Printf( “ please in put some message:' n ”); Fgets(i npipe,sizeof( in pipe),std in); write(fd[1],in pipe,50); } else if (pid>0); { wait(0); Printf( “ father get this message:\n ” ); read(fd[0],outpipe,50); printf( “ %s\n”,outpipe); } } [rootgzzw 亚以]# vi 2,c [rootgzzw zzwj# gcc o 2 2.c [roat@£zw wzw]# \/2 please input some me^sdge: 1223 father get thi^ message: 1223 I am(2)父子进程通过管道互相发送字符串。要求:子进程向父进程通过管道发送” child.",父进程回送” I am father. ”,父子进程将各自收到的字符串显示在屏幕上。 I am #in lcude<stdio.h> #in clude< uni std.h> #in clude<stri ng.h> main () { in t pid, fd[2]; char str1[50], str2[50]; pipe(fd); pid=fork(); if (pid==0) { strcpy(str1, ”1 ' m child ” ); write(fd[1],str1,strle n(str1)); Sleep(1); read(fd[0],str2,50); printf( “ Child received: %s\n ” ,str2); } else if (pid>0) { read(fd[0],str1,50); printf( “ Pare nt received:%s\n ”,str1); strcpy(str2, ” I ' m father. ” ); write(fd[1],str2,strle n(str2));

文档评论(0)

cooldemon0601 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档