Skip to content

공유 메모리 예제

2016.09.09 21:13

WHRIA 조회 수:136

http://wwwi.tistory.com/63

 

◆ 공유 메모리 생성과 공유 메모리에 쓰기(서버)

#include <stdio.h>

#include <windows.h>

#include <conio.h>


#define    DATA_LEN    1024


LPSTR    lpMapping;


int main()

{

    BOOL    bEnd = FALSE;

    char    szData[DATA_LEN];

    char    szNo[8];

    HANDLE    hMemMap = NULL;


    while (1)

    {

        printf("1. 공유 메모리 데이터 쓰기\");

        printf("0. 종료\");

        printf("원하는 작업의 번호를 눌러주세요.");


        gets(szNo);


        switch (szNo[0])

        {

            case '1':


                // 매핑 파일 만들기

                hMemMap = CreateFileMapping((HANDLE)0xFFFFFFFF,

                                NULL,

                                PAGE_READWRITE,

                                0,

                                DATA_LEN,

                                "MemoryMapTest");


                if (hMemMap == NULL)

                    return -1;


                if (GetLastError() == ERROR_ALREADY_EXISTS)

                    printf("이미 매핑 오브젝트가 있음.\n");


                // 파일에 매핑하기

                lpMapping = (LPSTR)MapViewOfFile(hMemMap,

                                FILE_MAP_ALL_ACCESS,

                                0,

                                0,

                                0);


                if (lpMapping == NULL)

                    return -2;


                printf(" === 매핑 파일에 데이터 입력 ===\n");


                gets(szData);


                // 매핑 파일에 데이터 입력

                strcpy(lpMapping, szData);


                UnmapViewOfFile(lpMapping);


                break;

            case '0':

                bEnd = TRUE;

                break;

            default:

                printf("번호가 잘못됬어\\n");

                break;

        }

        if (bEnd)

            break;

    }


    if (CloseHandle(hMemMap) == 0)

        printf("메모리맵 핸들 종료 실패\");

    else

        printf("메모리맵 핸들 종료 성공\");


    return 0;

}



◆ 공유 메모리 열기와 공유 메모리의 데이터 읽기(클라이언트)

 

#include <stdio.h>

#include <windows.h>

#include <conio.h>


LPSTR    lpMapping;


int main()

{

    BOOL    bEnd = FALSE;

    char    szNo[8];

    HANDLE    hMapRead;


    while (1)

    {

        printf("1. 공유 메모리 데이터 읽기\");

        printf("0. 종료\");

        printf("원하는 작업의 번호를 눌러주세요.");


        gets(szNo);


        switch (szNo[0])

        {

            case '1':


                // 매핑 파일 열기

                hMapRead = OpenFileMapping(FILE_MAP_ALL_ACCESS,

                                FALSE,

                                "MemoryMapTest");


                // 파일에 매핑하기

                lpMapping = (LPSTR)MapViewOfFile(hMapRead,

                                FILE_MAP_ALL_ACCESS,

                                0,

                                0,

                                0);


                if (lpMapping == NULL)

                {

                    printf("읽기 실패\");

                    CloseHandle(hMapRead);

                    return -1;

                }


                // 읽어들인 데이터 출력

                printf(lpMapping);


                if (UnmapViewOfFile(lpMapping) == 0)

                {

                    printf("\n읽기용 어드래스 매핑 실패\");

                }

                else

                {

                    printf("\n읽기용 어드래스 매핑 성공\");

                    lpMapping = NULL;

                }


                CloseHandle(hMapRead);


                break;

            case '0':

                bEnd = TRUE;

                break;

            default:

                printf("번호가 잘못됬어\\n");

                break;

        }

        if (bEnd)

            break;

    }


    return 0;

}

번호 제목 글쓴이 날짜 조회 수
259 Re: 안녕! 하세요? 한승석 2002.02.03 2074
258 안녕! 하세요? 朴成五 2002.02.03 2080
257 뉴스 그룹을 아시나요? 한승석 2002.02.02 1964
256 승석아... 재호 2002.01.26 2069
255 헉...승석승석 재호 2002.01.24 2071
254 전하는 말... 재호 2002.01.23 2076
253 최종 공지... 재호 2002.01.23 2074
252 도배... 재호 2002.01.23 2004
251 새로운 공지야...교통편에 대한 재호 2002.01.22 1980
250 이건 필독 재호 2002.01.21 2074
249 이것도 읽어보렴... 재호 2002.01.21 2001
248 승석...나우에어캠프다... 재호 2002.01.21 2086
247 Happy new year!! 주미진 2002.01.04 2081
246 인턴일정 한승석 2002.01.04 2075
245 나여 재호 2001.12.24 2567

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소