#include    <stdio.h>
#include    <math.h>
#include    <fcntl.h>
#include    <math.h>
#include    <sys/types.h>
#include    <unistd.h>
#include    <sys/mman.h>

typedef struct {
    char    str[512];
    long    lval;
    double  dval;
}SSS;

#define NUMBER (10000)

void main()
{
int   fd;
long  psize,size;
SSS   *ptr;
long  i;

    /* マップ用ファイルオープン */
    if((fd=open("MapFile",O_RDWR))== -1){
        perror("open");
        exit(-1);
    }

    /* ページサイズで境界合わせを行なったサイズを計算 */
#ifdef BSD
    psize=getpagesize();
#else
    psize=sysconf(_SC_PAGE_SIZE);
#endif
    size=(NUMBER*sizeof(SSS)/psize+1)*psize;

    /* マップ */
    ptr=(SSS *)mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);

    /* テスト */
    while(1){
        /* 全データの表示 */
        for(i=0;i<NUMBER;i++){
            if(i%1000==0){
                printf("{%5d:%d,%g,%s}\n", i, ptr[i].lval, ptr[i].dval, ptr[i].str);
            }
        }
        printf("\n");
        /* 1秒待ち */
        sleep(1);
    }
}
