共享内存——The Shared memory
来源:互联网 发布:c语言库函数的数量 编辑:程序博客网 时间:2024/05/16 18:00
// share the memory space
// 出于多个进程之间通信考虑的
// 每个IPC的object 通过键,进程识别所用的object
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/shm.h>
#define MEMSIZE 2048
int main()
{
int shmid;
pid_t pid;
char *ptr;
// 建立共享内存()键值key参数为IPC_PRIVATE/0 创建一块新的共享内存。
// void *shmat(int shmid, const void *shmaddr, int shmflg);
// shmflg 文件标志,
// IPC_CREAT (共享内存)无则创建,有则打开
// IPC_EXCEL 只有共享内存不存在时,才创建,否则出错。
// IPC_CREAT|IPC_EXCEL 确保是新创建的,而不是打开已有的共享内存。
shmid = shmget(IPC_PRIVATE,MEMSIZE,0600);
//
if(shmid < 0)
{
perror("shmget()");
exit(1);
}
pid = fork();
if(pid < 0)
{
perror("fork()");
exit(1);
}
if(pid == 0) // child write
{
// 允许本进程使用某块共享内存
ptr = shmat(shmid,NULL,0);
if(ptr == (void *) -1)
{
perror("shmat()");
exit(1);
}
strcpy(ptr,"hello");
//禁止本进程使用这块空间。
shmdt(ptr);
exit(0);
}
else // parent read
{
wait(NULL);
ptr = shmat(shmid,NULL,0);
if(ptr == (void *) -1)
{
perror("shmat()");
exit(1);
}
puts(ptr);
shmdt(ptr);
//
//IPC_RMID 删除这块共享内存。
//IPC_SET 改变共享内存的状态
//IPC_STAT 得到共享内存的状态
shmctl(shmid,IPC_RMID,NULL);
exit(0);
}
}
- 共享内存——The Shared memory
- 内存共享(Shared Memory)
- 共享内存: Shared Memory
- RTX基础之共享内存 Shared Memory
- RTX基础之共享内存 Shared Memory
- 共享内存(Shared Memory)介绍
- Anonymous Shared Memory android 匿名共享内存
- 共享内存(shared memory)和信号量(semaphore)简介(转)
- 双语:Shared-Memory Systems共享内存系统 生产者消费者简介
- 共享内存 Shared Memory - Linux进程间通信
- 进程间通信之共享内存shared memory
- GPU 共享内存bank冲突(shared memory bank conflicts)
- 共享内存与消息传递 Shared memory versus message passing
- cuda shared(共享内存)—一个容易错误的点
- PostgreSQL的内存管理机制十一:初始化共享内存shared memory及其哈希表索引
- 多线程进程间通讯共享内存(Shared Memory with IPC with threads)
- 共享内存 (shared memory)是 Unix下的多进程之间的通信方法
- Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划
- vc 线程的创建,暂停和结束
- 变量 类型 运算符 笔记整理02
- SHTSC记 13.10.26
- Asp.Net生成静态页面的实现方法
- Matlab基本函数-cylinder函数
- 共享内存——The Shared memory
- 关于进制转换的一些函数(可以任意进制转换为任意进制)
- Android之ViewFlipper
- 用linkList实现LRU算法
- UVa11054 poj2940 sdut2370 Wine trading in Gergovia(贪心)
- Asp.net动态生成html页面的方法分享
- adb常用命令及遇到的问题总结
- OCP-1Z0-052-V8.02-58题
- 纪念