본 포스팅에서는 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를 얻어와서 공유 메모리의 값을 하나씩 증가시키는 예제
1. Sharedmememory 관련 C파일 생성
* 본인은 sharedmemory.c 라는 이름으로 생성함
$ vi sharedmemory.c (c 파일 생성)
2. 컴파일 후 실행
* makefile을 통해 컴파일 해도 되고, 아래와 같이 직접 컴파일 명령어를 쳐도 됨
$ gcc -o [컴파일이름][컴파일할 파일이름] (컴파일이름은 맘대로, 컴파일할 파일이름은 1번에서 생성한 c파일 이름)
$ gcc -o tt sharedmemory.c
컴파일 된 tt 파일이 생성 되었으면 ./컴파일명 명령어로 실행시키자
$./tt
./tt 명령어를 실행시킬 때 마다 공유메모리 값이 하나씩 증가되는 것을 확인할 수 있음
Message queue
** Message queue 에서는 sender 와 receive 파일 두개 모두 필요 **
1. 메시지를 보내는 c 파일 생성 (sender)
* 본인은 sender.c 라는 이름으로 c 파일 생성 (파일 이름은 마음대로)
$ vi sender.c (c 파일 생성)
msgget 으로 System V의 메시지 큐 id를 얻어오고, 메시지 큐 식별자를 생성해주어야 한다.
2. 메시지를 받는 c 파일 생성 (receive)
* 본인은 receive.c 라는 이름으로 c 파일 생성 (파일 이름은 마음대로)
$ vi receive.c (c 파일 생성)
받아오는 쪽의 msqid를 받고, 메시지도 받는다
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
'LINUX > ABOUT LINUX' 카테고리의 다른 글
[Linux] IPC 예제 ③ Soket Model (fork 방식) (1) | 2022.11.24 |
---|---|
[Linux] IPC 예제 ② Semaphore (0) | 2022.10.28 |
[Linux] IPC (Inter-Process Communication) 기본 개념 (0) | 2022.10.28 |
[Linux] OCI (Oracle Call Interface) (2) | 2022.10.28 |
[Linux] 내가 이해하기 위한 Pro*c 개념 (0) | 2022.10.27 |