Chinaunix

标题: ZT:Linux的共享内存技术 [打印本页]

作者: speakitnow    时间: 2006-08-17 10:04
标题: ZT:Linux的共享内存技术
http://www.gbunix.com/htmldata/2006_07/14/20/article_1339_1.html
Linux的共享内存技术
                     
                    
                    
                     
                                 
                                    
                                      
                                    
                                 
                        
源代码是从别人的文章中抄过来的,不是原创,不过写得不错,主要是描述两个不同的进程从共享内存中存取数据的技术,我加了点分析:
第一个是写数据:
/***** testwrite.c *******/
#include
#include
#include
#include
typedef struct{
        char name[4];
        int age;
} people;
main(int argc, char** argv)
{
        int shm_id,i;
        key_t key;
        char temp;
        people *p_map;
        char* name = "/dev/shm/myshm2";
        key = ftok(name,0);
        if(key==-1)
                perror("ftok error");
/*先用ftok创建一个key,再调用shmget,创建一块共享内存区域*/
        shm_id=shmget(key,4096,IPC_CREAT);        
        if(shm_id==-1)
        {
                perror("shmget error");
                return;
        }
/*将这块共享内存区附加到自己的内存段*/
        p_map=(people*)shmat(shm_id,NULL,0);
        temp='a';
        for(i = 0;i
#include
#include
#include
typedef struct{
        char name[4];
        int age;
} people;
main(int argc, char** argv)
{
        int shm_id,i;
        key_t key;
        people *p_map;
        char* name = "/dev/shm/myshm2";
        key = ftok(name,0);
        if(key == -1)
                perror("ftok error");
        shm_id = shmget(key,4096,IPC_CREAT);        
        if(shm_id == -1)
        {
                perror("shmget error");
                return;
        }
        p_map = (people*)shmat(shm_id,NULL,0);
        for(i = 0;i
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/14014/showart_156577.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2