用共享内存读写数据
来源:互联网 发布:json在qt中的使用 编辑:程序博客网 时间:2024/06/05 00:12
31_shm_read.c
#include<stdio.h>#include<stdlib.h>#include<sys/ipc.h>#include <sys/types.h>#include<sys/shm.h>#include<string.h>#define SHM_SIZE 1024//用共享内存读写数据//读数据到共享内存/*int shmctl(int shmid, int cmd, struct shmid_ds *buf);删除共享内存参数2: IPC_STAT (获取对象属性) IPC_SET (设置对象属性) IPC_RMID (删除对象)参数3:一般删除对象填NULL*/int main(){ //1.创建共享内存 key_t key = ftok(".",'a'); int shmid = -1; shmid = shmget(key,SHM_SIZE,IPC_CREAT | 0666); if(shmid < 0) { perror("shmget"); exit(1); } //2.映射 char *ptr = NULL; ptr = shmat(shmid,NULL,0);//0表示共享内存可读可写 if(ptr == (void *)-1) { perror("shmat"); exit(1); } //3.读数据 while(1) { if(ptr[0] != '\0')//厉害 printf("ptr = %s\n",ptr); if(!strncmp(ptr,"quit",4)) break; //必须要手动清空 memset(ptr,0,SHM_SIZE);//清空内存 sleep(1);//因为没有阻塞 } //4.解除共享内存映射 if(shmdt(ptr) < 0) { perror("shmdt"); exit(1); } //5.删除共享内存 if(shmctl(shmid,IPC_RMID,NULL) == -1) { perror("shmctl"); exit(1); }}/*$ ./31_shm_readptr = helloptr = woooooo*/
31_shm_write.c
#include<stdio.h>#include<stdlib.h>#include<sys/ipc.h>#include <sys/types.h>#include<sys/shm.h>#include<string.h>#define SHM_SIZE 1024//用共享内存读写数据//写数据到共享内存//媒介是ptrint main(){ //1.创建共享内存 key_t key = ftok(".",'a');//键一定要唯一 int shmid = -1; shmid = shmget(key,SHM_SIZE,IPC_CREAT | 0666);//返回值为id号 if(shmid < 0) { perror("shmget"); exit(1); } //2.映射 char *ptr = NULL; ptr = shmat(shmid,NULL,0);// 返回值为被映射的段地址 if(ptr == (void *)-1) { perror("shmat"); exit(1); } //3.写数据 char buf[128]; while(1) { fprintf(stderr,"input:"); fgets(buf,127,stdin); strncpy(ptr,buf,strlen(buf)); if(!strncmp(buf,"quit",4)) break; } //4.解除共享内存映射 if(shmdt(ptr) < 0) { perror("shmdt"); exit(1); } //5.写端一般不要删除}/*$ ./31_shm_writeinput:helloinput:wooooooinput:*/
阅读全文
0 0
- 用共享内存读写数据
- 共享内存读写小结
- Qt共享内存读写
- 共享内存的读写
- MemoryStream内存数据读写
- 内存映像共享数据
- 怎样创建和读写共享内存?
- c#读写共享内存操作函数封装
- 共享内存通过信号量控制读写
- linux posix 读写锁+共享内存demo
- 进程同步(读写共享内存)
- 共享内存的数据同步
- DLL实现数据内存共享
- DLL内存映像共享数据
- 用内存映射文件在进程中共享数据
- 用内存映射在多个应用程序之间共享数据
- 用内存映射文件在进程中共享数据
- 进程间通信:用信号量实现对共享内存读写顺序的控制
- DSP开发的一点概念
- Servlet中不用sping注入原因和解释
- Samba案例
- 单向队列和优先级队列
- 关于dedecms后台控制常用操作错位解决办法
- 用共享内存读写数据
- unity5 Orthographic模式相机视截体尺寸计算
- centos启用ftp功能
- 第十三周——项目三—是否二叉排序树?
- Eclipse+Maven(webapp)+Jetty+JReBel的配置方法
- error while loading shared libraries: ***.so: cannot open shared object file: No such file or direct
- 第十三周项目四
- url参数中有+、空格、=、%、&、#等特殊符号的问题解决
- 第十五周内部排序(2)项目1---(2)希尔排序