首页 > 系统服务 > 详细

linux 进程间的通讯之共享内存 写入篇

时间:2021-04-08 15:08:19      阅读:12      评论:0      收藏:0      [点我收藏+]

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>


int main()
{
int shmId;
char* shmaddr;
key_t key;

key=ftok(".",1);//共享内存的通讯方式是通过键值来寻找的," . "表示当前路径的键值表示只有在同一个文件夹下面才能进行通讯, 系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id ),fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号.

// int shmget(key_t key, size_t size, int shmflg);

shmId=shmget(key,1024*4,IPC_CREAT|0666);//开辟一个共享内存的空间,必须以兆为单位,第三个参数为ipc通讯的指令,0666是权限可读可写。

if(shmId==-1){
printf("memo create fail\n");//开辟空间失败返回值为-1
}

// void *shmat(int shmid, const void *shmaddr, int shmflg);
shmaddr=shmat(shmId,0,0);//内存的映射,映射到数组

strcpy(shmaddr,"huangqifeng");

shmdt(shmaddr);//结束内存的映射

sleep(10);
// int shmctl(int shmid, int cmd, struct shmid_ds *buf);
shmctl(shmId,IPC_RMID,0);//关闭共享内存

printf("quit\n");


return 0;
}

 

linux 进程间的通讯之共享内存 写入篇

原文:https://www.cnblogs.com/1402192381hqf/p/14631505.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!