LINUX/ABOUT LINUX

[Linux] IPC 예제 ① Shared Memory & Message Queue

옐옐루 2022. 10. 28. 16:40

본 포스팅에서는 Shared Memory와 Message Queue 와 관련된 기본 예제를 프로그래밍 한다. 

IPC 통신과 각각의 방법의 개념에 대해 공부하고 싶다면 아래 포스팅을 참조하자

 

[Linux] IPC (Inter-Process Communication) 기본 개념 (tistory.com)

 

[Linux] IPC (Inter-Process Communication) 기본 개념

IPC란? 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합이다.  복수의 프로세스를 수행 및 프로세스 간 통신 구현 가능 1. Pipe (익명 PIpe)  - 두개의 프로세스를

tjqud531531.tistory.com


 


Shared Memory 

공유메모리 id를 얻어와서 공유 메모리의 값을 하나씩 증가시키는 예제 

 

출처 : 본인 PPT

 

1. Sharedmememory 관련 C파일 생성

  * 본인은 sharedmemory.c 라는 이름으로 생성함  

 $ vi sharedmemory.c (c 파일 생성) 

 

sharedmemory.c 파일 내용

 

2. 컴파일 후 실행 

 * makefile을 통해 컴파일 해도 되고, 아래와 같이 직접 컴파일 명령어를 쳐도 됨 

 $ gcc -o [컴파일이름][컴파일할 파일이름]  (컴파일이름은 맘대로, 컴파일할 파일이름은 1번에서 생성한 c파일 이름) 

 $ gcc -o tt sharedmemory.c 

 컴파일 된 tt 파일이 생성 되었으면 ./컴파일명 명령어로 실행시키자

 $./tt

 

실행결과

./tt 명령어를 실행시킬 때 마다 공유메모리 값이 하나씩 증가되는 것을 확인할 수 있음 

 


Message queue

 

출처 : 본인 PPT

 

** Message queue 에서는 sender 와 receive 파일 두개 모두 필요 **

1. 메시지를 보내는 c 파일 생성 (sender) 

 * 본인은 sender.c 라는 이름으로 c 파일 생성 (파일 이름은 마음대로) 

 $ vi sender.c (c 파일 생성) 

  msgget 으로 System V의 메시지 큐 id를 얻어오고, 메시지 큐 식별자를 생성해주어야 한다.

 

sender.c 파일

 

2. 메시지를 받는 c 파일 생성 (receive)

 * 본인은 receive.c 라는 이름으로 c 파일 생성 (파일 이름은 마음대로) 

 $ vi receive.c (c 파일 생성) 

 받아오는 쪽의 msqid를 받고, 메시지도 받는다

 

receive.c 파일 생성

3. 컴파일 후 실행

 * makefile을 통해 컴파일 해도 되고, 아래와 같이 직접 컴파일 명령어를 쳐도 됨 

 $ gcc -o [컴파일이름][컴파일할 파일이름]  (컴파일이름은 맘대로, 컴파일할 파일이름은 1번에서 생성한 c파일 이름) 

 $ gcc -o ts sender.c

 $ gcc -o tr receive.c 

 컴파일 된 tt 파일이 생성 되었으면 ./컴파일명 명령어로 실행시키자

 $ ./ts 

 실행시킨 후 $ ipcs -q 명령어로 상태를 확인해보고 

 $ ./tr 

 실행시킨 후 $ ipcs -q 명령어로 상태를 확인해보면 아래와 같이 messages 의 숫자가 1에서 0으로 바뀐 것을 확인해볼 수

 있음 

 

 

 

 

 

다른 IPC 통신 방식의 프로그래밍 예제를 보고 싶다면 다음 포스팅을 눌러주세요

[Linux] IPC 예제 ② Semaphore (tistory.com)

 

[Linux] IPC 예제 ② Semaphore

본 포스팅에서는 Semaphore 와 관련된 기본 예제를 프로그래밍 한다. IPC 통신과 각각의 방법의 개념에 대해 공부하고 싶다면 아래 포스팅을 참조하자 [Linux] IPC (Inter-Process Communication) 기본 개념 (tist

tjqud531531.tistory.com

 

반응형