LINUX下利用特殊文件系统shm 实现内存的共享

来源:互联网 发布:snh48黑历史 知乎 编辑:程序博客网 时间:2024/05/18 19:46
#include<stdio.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int shmid = shmget((key_t)111, 4096, IPC_CREAT);   //创建共享内存,返回共享内存标识符
if (shmid == -1)
{
perror("shmget");
}          
char *ptr = (char *)shmat(shmid, NULL, 0);                    //映射共享内存,方便进程对共享区域进行操作
if ((int)ptr == -1)
{
perror("shmat");
}
char str[100] = {0};
    scanf("%s", str);
memcpy(ptr, str,100);                                                          //将输入的字符写入共享内存
return 0;

}


--------------------------------------------------------------------------------------------------------------------分割线---------------------------------------------------------------------------------------------------------------------

#include<stdio.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<sys/types.h>
#include<unistd.h>
#include<string.h>
int main()
{
int shmmid = shmget((key_t)111, 4096, IPC_PRIVATE);                 //与前一个程序的key(标识共享内存的键值)相同,找到同一个共享内存
if (shmmid == -1)
{
perror("shmid");
}


char *ptr1 = (char *)shmat(shmmid, NULL, 0);
if ((int)ptr1 == -1)
{
perror("shmat");
}
char s[100];
memcpy(s  , ptr1, 100);                                                                   //拷贝内存中的字符
printf("%s\n", s);
return 0;
}

原创粉丝点击