- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验10-进程间通信
/*msgqueue.h*/ #include stdio.h #include stdlib.h #include string.h #include unistd.h #include sys/ipc.h #include sys/msg.h #include error.h #define BUFFER 10 #define MSG_PATH /home/stu #define PRIVATE_KEY 10001 struct msgbuf{ long mtype; char buf[BUFFER]; }; System V消息队列实例 //每个消息都用类似的数据结构来表示 /*sender.c*/ #include msgqueue.h int main(){ key_t msgkey; int msgid; struct msgbuf msg; msgkey = ftok(MSG_PATH, PRIVATE_KEY); if(msgkey == -1) { perror(ftok error); exit(-1); } msgid = msgget(msgkey, IPC_CREAT|0666); if(msgid == -1) { perror(msgget error); exit(-1); } int i = 0; while(i10){ memset(msg.buf, 0, BUFFER); sprintf(msg.buf, buf_0x%x, i); msg.mtype=1001; if( msgsnd(msgid, msg, sizeof(struct msgbuf), 0) 0) { perror(msgsnd); exit(-1); } i++; sleep(1); } sleep(30); if( msgctl(msgid, IPC_RMID, 0) ==-1){ perror(msgctl error); exit(-1); } return 0; } System V消息队列实例 /*receiver.c*/ #include msgqueue.h“ struct msgbuf msg; int main(){ key_t msgkey; int msgid; msgkey = ftok(MSG_PATH, PRIVATE_KEY); if(msgkey == -1){ perror(ftok error); exit(-1); } msgid = msgget(msgkey, IPC_EXCL|0666) ; if(msgid==-1){ perror(msgget error); exit(-1); } int i = 0; while(i10){ memset(msg.buf, 0, BUFFER); msg.mtype=1001; if( msgrcv(msgid, msg, sizeof(struct msgbuf), msg.mtype, 0) == -1){ perror(msgrcv error); exit(-1); } printf(msg.buf = %s\n, msg.buf); i++; sleep(2); } return 0; } System V消息队列实例 System V共享内存API实例 shmget()创建共享内存 shmat()将共享内存连接到进程 shmdt()将共享内存与进程解除连接 shmctl()删除共享内存 /*shmtest.h*/ #include sys/ipc.h #include sys/shm.h #include sys/types.h #include unistd.h typedef struct{ char name[4]; int age; } people; /*testwrite.c*/ #include “shmtest.h” void main(int argc, char** argv) { int shm_id,i; key_t key; char temp; people *p_map; char* name = /dev/shm/myshm2; key = ftok(name,’a’); if(key==-1) { perror(
您可能关注的文档
最近下载
- 初中历史教师备课与授课.ppt VIP
- 62推销理论(教案)(商务谈判与推销).docx VIP
- 眼科学---巩膜扣带术.ppt VIP
- 2024年山东省平原县事业单位公开招聘教师岗笔试题带答案.docx VIP
- 新世纪全国高等中医药院校教材(第一版).doc VIP
- 初中语文2025届中考常考易错字词汇总(多音字+形声字+易错字形+易错成语)_可搜索.pdf VIP
- PADI开放水域潜水员理论考试A卷.docx VIP
- 社会责任全套培训记录表(含附属全套电子表格表).xls VIP
- 路科笔试真题完整版1.5.1.pdf VIP
- (人教版)八年级物理上册《第一章机械运动》单元测试卷含答案.docx VIP
文档评论(0)