Skip to content

공유 메모리 예제

2016.09.09 21:13

WHRIA 조회 수:121

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;

}

번호 제목 글쓴이 날짜 조회 수
1581 MS bot framework [3] WHRIA 2020.06.13 99
1580 file lock WHRIA 2020.09.22 99
1579 popup WHRIA 2020.12.31 99
1578 KMA 연수교육 주소 WHRIA 2016.10.05 100
1577 opencv rotate WHRIA 2019.03.09 106
1576 caffe WHRIA 2016.10.19 106
1575 indexeddb [2] WHRIA 2021.02.07 106
1574 fast rcnn WHRIA 2017.01.08 107
1573 high impact journals WHRIA 2019.04.07 112
1572 PHP7 으로 업그레이드 WHRIA 2016.05.05 116
» 공유 메모리 예제 WHRIA 2016.09.09 121
1570 벤츠 E300 2010 년형 터치스크린 자가 수리 WHRIA 2015.12.25 122
1569 Visual Studio 필요없는 파일 삭제 for SVN file WHRIA 2016.09.04 125
1568 pytorch optimize WHRIA 2020.08.01 126
1567 은행은 믿을 곳이 못 되는군... WHRIA 2019.07.12 127

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소