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

#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 进程间的通讯之共享内存 写入篇

上一篇:重置gvim8 ctrl+f的翻页功能


下一篇:解决SecureCRT连接Linux小键盘在vim编辑器里不能使用问题