IPC(3)
-
[리눅스 프로그래밍 시리즈 23편] 공유 메모리 & 메시지 큐: 고급 IPC(프로세스 간 통신) 완전 이해
목표: 공유 메모리와 메시지 큐의 개념과 사용법을 이해한다 결과: 프로세스 간 빠르고 안전하게 데이터를 주고받을 수 있다1. IPC의 진짜 핵심 단계18편에서 pipe를 배웠다.하지만 pipe는 한계가 있다.단방향 통신부모/자식 관계 필요그래서 더 강력한 IPC가 필요하다.공유 메모리 (Shared Memory)메시지 큐 (Message Queue)2. 공유 메모리란?여러 프로세스가 같은 메모리 영역을 공유하는 방식.구조:프로세스 A │ ├── 공유 메모리 ──┤ │프로세스 B장점:매우 빠름 (메모리 직접 접근)대용량 데이터 처리 가능3. 공유 메모리 생성 (shmget)#include #include int shmid = shmget(IPC_PRIVATE, 1024, IPC_..
2026.03.23 -
[리눅스 프로그래밍 시리즈 19편] fork 시스템 콜 완전 이해: 리눅스에서 새로운 프로세스가 만들어지는 원리
목표: fork 시스템 콜의 동작 원리를 이해한다 결과: 부모 프로세스와 자식 프로세스의 실행 흐름을 이해하고 활용할 수 있다1. 리눅스에서 프로세스는 어떻게 생성될까?리눅스에서 새로운 프로그램이 실행될 때 가장 중요한 시스템 콜이 있다.fork()fork는 현재 실행 중인 프로세스를 복사하여 새로운 프로세스(자식 프로세스) 를 만든다.구조:부모 프로세스 │ fork() │ ┌─────────────┐ │ │부모 자식프로세스 프로세스fork 이후에는 두 개의 프로세스가 동시에 실행된다.2. fork 함수#include pid_t fork(void);fork는 호출 후 두 번 반환된다.반환값의미>0부모 프로세스 (자식 PID 반환)0자..
2026.03.13 -
[리눅스 프로그래밍 시리즈 18편] pipe 시스템 콜: 리눅스 프로세스 간 통신(IPC)의 가장 기본 구조
목표: pipe 시스템 콜을 이용한 프로세스 간 통신을 이해한다 결과: 한 프로세스의 출력이 다른 프로세스의 입력으로 전달되는 구조를 구현할 수 있다1. 프로세스는 기본적으로 서로 독립적이다리눅스에서 실행되는 프로세스는 서로 독립적인 메모리 공간을 가진다.즉 기본적으로는다른 프로세스 변수 접근 불가메모리 공유 불가하지만 실제 프로그램에서는 프로세스 간 데이터 전달이 필요하다.예:쉘 파이프 (ls | grep txt)서버 프로세스데이터 처리 파이프라인이런 통신을 IPC (Inter Process Communication) 라고 한다.그리고 가장 기본적인 IPC가 바로 pipe다.2. pipe의 기본 개념pipe는 한 방향 데이터 통로다.구조:프로세스 A → pipe → 프로세스 BA는 데이터를 쓰고..
2026.03.13