linux共享内存的读写问题!!

布鲁克斯南南 2013-03-29 01:29:35
//共享内存区段的挂载,脱离和使用   
//理解共享内存区段就是一块大内存
#include <stdio.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <errno.h>
#define MY_SHM_ID 67483
int main( )
{
//共享内存区段的挂载和脱离
int shmid,ret;
void* mem;
shmid=shmget( MY_SHM_ID,0,0 );
if( shmid>=0 )
{
mem=shmat( shmid,( const void* )0,0 );
//shmat()返回进程地址空间中指向区段的指针
if( ( int )mem!=-1 )
{
printf( "Shared memory was attached in our address space at %p/n",mem );
//向共享区段内存写入数据
strcpy( ( char* )mem,"This is a test string./n" );
printf( "%s/n",(char*)mem );
//脱离共享内存区段
ret=shmdt( mem );
if( ret==0 )
printf( "Successfully detached memory /n" );
else
printf( "Memory detached failed %d/n",errno );
}
else
printf( "shmat( ) failed/n" );

}
else
printf( "shared memory segment not found/n" );
return 0;
}



向共享内存里添加数据除了上面注释的方法外,还有没有其他的方法啊(不要说memcopy之类的)!也就是速度快点的手段!!!
还有从共享内存里读出数据,用什么手段????
有没有像文件读取那样的read ,write那样的手段?
...全文
346 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
布鲁克斯南南 2013-05-30
  • 打赏
  • 举报
回复
引用 2 楼 justkk 的回复:
类似于文件操作的可以使用mmap文件映射
只有你一个人回答了,分全给你吧!
justkk 2013-04-01
  • 打赏
  • 举报
回复
类似于文件操作的可以使用mmap文件映射
布鲁克斯南南 2013-04-01
  • 打赏
  • 举报
回复
靠 版主 大牛 快来啊 !!

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧