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;

}

번호 제목 글쓴이 날짜 조회 수
1579 LG 21 세기 brain hunt - USA file WHRIA 2019.05.23 434
1578 pROC package [3] WHRIA 2019.05.11 160
1577 이미지 비교 [1] WHRIA 2019.04.23 112
1576 label noise [1] WHRIA 2019.04.18 537
1575 드리블 WHRIA 2019.04.12 79
1574 high impact journals WHRIA 2019.04.07 126
1573 color pallate WHRIA 2019.04.07 63
1572 good luck ! WHRIA 2019.03.21 313
1571 swap memory WHRIA 2019.03.14 62
1570 이궁 WHRIA 2019.03.12 143
1569 HASh benchmark WHRIA 2019.03.10 436
1568 opencv rotate WHRIA 2019.03.09 115
1567 mAP 계산법 WHRIA 2019.02.24 45574
1566 t test WHRIA 2019.02.13 100
1565 전세금 돌려받는 법 WHRIA 2019.02.11 219

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소