Skip to content

공유 메모리 예제

2016.09.09 21:13

WHRIA 조회 수:120

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;

}

번호 제목 글쓴이 날짜 조회 수
156 startup , 미국 WHRIA 2020.07.30 134
155 CORS WHRIA 2021.01.22 133
154 Google vs Microsoft: The good, bad, and ugly of the AI arms race WHRIA 2023.02.14 131
153 나이 40에... WHRIA 2018.09.01 130
152 fast rcnn cudnn 5.0 WHRIA 2017.01.08 128
151 역시 개원해서는 돈 버는 재미밖에 없다. WHRIA 2016.06.17 128
150 은행은 믿을 곳이 못 되는군... WHRIA 2019.07.12 127
149 pytorch optimize WHRIA 2020.08.01 126
148 Visual Studio 필요없는 파일 삭제 for SVN file WHRIA 2016.09.04 125
147 벤츠 E300 2010 년형 터치스크린 자가 수리 WHRIA 2015.12.25 122
» 공유 메모리 예제 WHRIA 2016.09.09 120
145 PHP7 으로 업그레이드 WHRIA 2016.05.05 116
144 high impact journals WHRIA 2019.04.07 112
143 fast rcnn WHRIA 2017.01.08 107
142 indexeddb [2] WHRIA 2021.02.07 106

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소