ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Linux] shared memory
    Programming/system programming 2013. 6. 19. 18:40

    #include<sys.ipc.h>
    #include<sys/shm.h>

     int shmget(key_t key, size_t size, int shmflg)

    공유 메모리를 생성하는 함수. 또한 공유메모리를 생성하기 전에 이미 만들어져 있나 확인할 때 사용함.

    성공시 반환값 : 공유 메모리 식별자

    실패시 반환값 : -1

     key_t key

     공유 메모리를 구별하는 식별번호(공유 메모리의 고유 값으로 사용자가 임의 설정)

     size_t size

     공유 메모리 크기

     int shmflg

     동작 옵션

    IPC_CREATE : key에 해당하는 공유 메모리가 없다면 생성한다. 만약 있다면 무시하며 생성을 위해 접근 권한을 저정해 주어야 한다.

    IPC_EXCL: 공유 메모리가 이미 있다면 실패로 반환하며 공유 메모리에 접근하지 못한다.

     void* shmat(int smId, const void* shm_addr, int flag)

    가상 메모리와 물리적메모리 영역을 연결해주는 함수.

    성공시 반환값 : 프로세스에 첨부된 프로세스의 공유 메모리 주소

    실패시 반환값 : (void*)-1

     int smId

    공유메모리 식별자

     const void* shm_addr

    공유메모리와 연결하고자 하는 프로세스 내부의 메모리(프로그래머가 직접 정해주는 것보다 시스템에 의해 할당되는 것이 나으므로 null로 세팅함)

     int flag

    속성 설정

    (SHM_RND:공유메모리와 연결되는 프로세스 내부 어드레스를 시스템이 관리하도록 함

    SHM_RDONLY: 읽기 전용으로 메모리를 연결, SHM_REMAP:연결영역을 대체)

     

     

    shmdt((void *)shrMem);

     

    shmctl(shmid, IPC_RMID, NULL);

     

    'Programming > system programming' 카테고리의 다른 글

    [linux] mmap sys call  (0) 2015.11.01
    [linux] 디바이스 드라이버 만들기  (0) 2015.06.01
    [네트워크]주소변환관련 API  (0) 2014.10.03
Designed by Tistory.