记录一下。
send.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define BUFSZ 1024*1024
int main(int argc, char *argv[])
{
int shmid;
int ret;
key_t key;
char *shmadd;
//创建key值
key = ftok(".", 2016);
//创建共享内存
shmid = shmget(key, BUFSZ, IPC_CREAT|0666);
//映射
shmadd = (char*)shmat(shmid, NULL, 0);
//拷贝数据至共享内存区
printf("copy data to shared-memory\n");
bzero(shmadd, BUFSZ); // 共享内存清空
strcpy(shmadd, "how are you, lh");
return 0;
}
rev.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define BUFSZ 1024*1024
int main(int argc, char *argv[])
{
int shmid;
int ret;
key_t key;
char *shmadd;
//创建key值
key = ftok(".", 2016);
//打开共享内存
shmid = shmget(key, BUFSZ, IPC_CREAT|0666);
//映射
shmadd = (char*)shmat(shmid, NULL, 0);
//读共享内存区数据
printf("data = [%s]\n", shmadd);
//分离共享内存和当前进程
ret = shmdt(shmadd);
//删除共享内存
// shmctl(shmid, IPC_RMID, NULL);
return 0;
}
如果共享内存shmid已存在,可以用ipcs查看,然后ipcrm -m shmid删除即可。
原文链接: https://www.cnblogs.com/tiandsp/p/15552737.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/214893
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!