首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2013-07-01 
linux共享内存的读写问题!!//共享内存区段的挂载,脱离和使用//理解共享内存区段就是一块大内存#include s

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

//共享内存区段的挂载,脱离和使用   
//理解共享内存区段就是一块大内存   
#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那样的手段?
[解决办法]
类似于文件操作的可以使用mmap文件映射

热点排行