linux共享内存的示例程序

 我来答
十六夜TA0034
2016-05-18 · 超过50用户采纳过TA的回答
知道答主
回答量:169
采纳率:0%
帮助的人:99.3万
展开全部

代码 5.1 中的程序展示了共享内存块的使用。
代码 5.1 (shm.c) 尝试共享内存
#include <stdio.h>
#include <sys/shm.h>
#include <sys/stat.h>
int main()
{
int segment_id;
char* shared_memory;
struct shmid_ds shmbuffer;
int segment_size;
const int shared_segment_size = 0x6400; /* 分配一个共享内存块 */
segment_id = shmget(IPC_PRIVATE, shared_segment_size, IPC_CREAT|IPC_EXCL|S_IRUSR|S_IWUSR ); /* 绑定到共享内存块 */
shared_memory = (char*)shmat(segment_id, 0, 0);
printf(shared memory attached at address %p\n, shared_memory); /* 确定共享内存的大小 */
shmctl(segment_id, IPC_STAT, &shmbuffer);
segment_size = shmbuffer.shm_segsz;
printf(segment size: %d\n, segment_size);
sprintf(shared_memory, Hello, world.); /* 在共享内存中写入一个字符串 */
shmdt(shared_memory); /* 脱离该共享内存块 */
shared_memory = (char*)shmat(segment_id, (void*) 0x500000, 0);/* 重新绑定该内存块 */
printf(shared memory reattached at address %p\n, shared_memory);
printf(%s\n, shared_memory); /* 输出共享内存中的字符串 */
shmdt(shared_memory); /* 脱离该共享内存块 */
shmctl(segment_id, IPC_RMID, 0);/* 释放这个共享内存块 */
return 0;
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式