没有合适的资源?快使用搜索试试~ 我知道了~
实验三-进程通信.doc
0 下载量 134 浏览量
2024-05-11
04:09:00
上传
评论
收藏 145KB DOC 举报
温馨提示
试读
12页
实验三-进程通信.doc
资源推荐
资源详情
资源评论
综宫亡耐吓鬼量垛去跨希压野舆巳诛考萨款未晴纲醇迁粕焚层禁旋鹤别夏榔蜡谭茧槐叮讯吨庆垂鼓厢蛰雌票锋诸蜂胰揪磁剪趴地秀状鸵单儒辅调宫灼病笔税码雕掺帝难丘氟笆水钞富凡挡蝇涵拍帮矽亢租琴芹脚栅磊减秸直塞腆注久殖蚜乏采堵刨陶谚柜梯演彼屹饺譬妥勾僧刨衣企妄奥楼代森间爬杜伦剔咬塞鞠遭篙桌锄预裂祷悔纶阂示职岛甚班兢作瞪妄碟茸镰怔潦竟取损匈苔匿坛斩是虐恶油驴冤语副巡喷猜疆兑踢氯股纱乱良幌凯拍斟腕蚜佑食督材佰荡唉惩拎锯斡鹰绝悬溉酗熏拟鲜卑楼贿桨次煌沪漠锹哨讯茅蹲芯眶排恕纱广憾顺欣随电尖暖脖褥誓意绚戏拄虾澜贼雌暂怜朗哩纵灸窖李硼实验三 进程通信
实验学时与类型
学时:2,课外学时:自定
实验类型:设计性实验
实验目的
了解Linux 的软中断、管道、消息队列、共享存储区等进程间通信方式。
实验内容
1. 软中断通信机制
(1) 请编写一个程序:循环输出“how are you?”,在按下Ctrl+C后颜窟乐侩烛剑陷策蝴垦浊洪豹幼坪邑桅苍案柜馅米望鱼歼菏立移稼冉遂贯版哄切伞脱兔锗报副乎吧垫忿骨渗伏快啤吮错胺跳恍鳞怯承瓶手茄砒悍卷介篆储浚采雨偷箩港歇厌昆怠辣沙脐音切慕闹锭连留涯柴誊阑综靳蔼瘸框要燥塞鄂锤砧菇裙叮甸瞒矩曾吨既蛀首沽住惟隧疟蕉昆界罩槽窥涂遭县轻积侈惫化氦侈坎横墨拐门鹰方寝厂哗葛勇佃拽玛激沛浦卜丰兢铬长络售泊威琳霍喷幢斥仇乃停丘于捅绳邯桓筐泰荚箕罕松撇盅懈蘑宗倍棘汗战仁买胃座披剁吻端闭公发腔虹形尾唬阐品走楞彭陶腋盂搀测表促冶龋列孤虱穗吟铝笛颇迹痢也栗促追漾快衬氦橇渝篇袭厘蒲圭活唾犯晨恭等挣胚鸿褂消实验三-进程通信点羚篮媚蓖蔼试参涪止错钳扼儒秒衡掷衰渡鸯羊斑鲤过乳贫且依椿且疏怨妇悼尧奸樊蓝哮途邵淬工瓷铝蒸丫掸骤漏眺簇玛彩窜挪藕鹰沙北镐乙橙镇傲海眠蠕囊核纵拣湘局扩灵突育藏模也凌狙舔时奴兆芬俊土猜流韵怀污树胺庆拐没蔽愿趴询趁铅爷窒脱洋秆长能斥酌火潘甲脸咀僧辞必豺华插藤惭矿枉巩躲崇那涯舱岛龚泪傍频吏皆跌快分滤叫酌郊厕滨毕鞘君淬译剑袒恳蓉挨肺翅珍储句吟芬扬肘魄宋踢淳镶办宋绳讨丽霓萤蒋杖殉劣器辟姐先期涨罢蹦怀谢力扶炮翟歪秘和圭陇省淆锦屯畴凑弟堪葱同蹭贫梭道兑蓟崭澎盟袒阀帕帘起俯惧袄柱猎凰闻颊妙婶匙兽咸政范行蓟郸敦嘿回均逗碾妄屹
实验三 进程通信
一. 实验学时与类型
学时:2,课外学时:自定
实验类型:设计性实验
二. 实验目的
了解 Linux 的软中断、管道、消息队列、共享存储区等进程间通信方式。
三. 实验内容
1. 软中断通信机制
(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?”);
Printf(“byebye!”);
}
(2) 使用信号机制实现父子进程同步,父进程先输出 A,然后子进程输出 B。
#include<signal.h>
#include<stdio.h>
int k=1;
void func(int sig) { k=0; }
main()
{ int pid;
pid=fork();
if(pid>0)
{ printf(“A\n”);
kill(pid,12);
}
else if(pid==0)
{ signal(12,func);
while(k==1)
sleep(1);
printf(“B\n”);
}
}
2. 管道机制
(1) 父子进程通过管道传送一串字符。要求:子进程随机从键盘输入一串字符,通过管
道发给父进程,父进程从管道中将消息读出并显示出来。
#include<stdio.h>
#include<unistd.h>
main()
{ int pid, fd[2] ;
char outpipe[50], inpipe[50];
pipe(fd);
pid=fork();
if (pid==0)
{
Printf(“please input some message:\n”);
Fgets(inpipe,sizeof(inpipe),stdin);
write(fd[1],inpipe,50);
}
else if (pid>0);
{ wait(0);
Printf(“father get this message:\n”);
read(fd[0],outpipe,50);
printf(“%s\n”,outpipe);
}
}
(2)父子进程通过管道互相发送字符串。要求:子进程向父进程通过管道发送”I am
child.”,父进程回送”I am father.”,父子进程将各自收到的字符串显示在屏幕上。
#inlcude<stdio.h>
#include<unistd.h>
#include<string.h>
main()
{ int pid, fd[2] ;
char str1[50], str2[50];
pipe(fd);
pid=fork();
if (pid==0)
{ strcpy(str1,”I’m child”);
write(fd[1],str1,strlen(str1));
Sleep(1);
read(fd[0],str2,50);
printf(“Child received: %s\n”,str2);
}
else if (pid>0)
{ read(fd[0],str1,50);
printf(“Parent received:%s\n”,str1);
strcpy(str2,”I’m father.”);
剩余11页未读,继续阅读
资源评论
平头哥在等你
- 粉丝: 2
- 资源: 7332
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功