快速业务通道

Linux进程通信 共享内存

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-30

输出

Messgae have been write to shared memory!
Message in shared memory:Hello world!

另外也可重新创建一个进程,读取该共享内存的数据.将上个c文件中一行删除,程序结束时不删除共享内存,再执行下面程序,使新进程读取共享内存数据.(共享内存需一致,创建时KEY相同)

  1. #include<sys/types.h>
  2. #include<sys/ipc.h>
  3. #include<sys/shm.h>
  4. #include<stdio.h>
  5. #include<sys/stat.h>
  6. #include<stdlib.h>
  7. #define KEY 1234
  8. #define SIZE 2048
  9. int main()
  10. {
  11. pid_t pid;
  12. int shmid; /*共享内存ID*/
  13. char * shmaddr; /*连接地址*/
  14. struct shmid_ds buf;
  15. shmid=shmget(KEY,SIZE,IPC_CREAT|0600);/*建立共享内存*/
  16. shmctl(shmid,IPC_STAT,&buf);/*共享内存状态存入buf中*/
  17. shmaddr=(char *)shmat(shmid,NULL,0);/*进程与共享内存连接*/
  18. printf("Message in shared memory:%s\n",shmaddr);/*输出共享内存数据*/
  19. shmdt(shmaddr);/*断开进程与共享内存的连接*/
  20. shmctl(shmid,IPC_RMID,NULL);/*删除共享内存*/
  21. }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号