* 해당 글은 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 도서를 읽고 정리한 글입니다
https://product.kyobobook.co.kr/detail/S000001223395
* IPC(Inter-Process Communication)
프로세스 사이의 통신
프로세스들은 자신에게 할당된 메모리 공간 이외에는 접근이 불가능
ㄴ 안정성을 높이기 위함
* 메일 슬롯(Mail Slot)
데이터를 주고 받기 위해서 프로세스가 우체통을 마련하는 것
단방향 통신과 브로드캐스팅 방식을 지원하는 통신 기법
* CreateMailslot 함수
HANDLE CreateMailslotA(
[in] LPCSTR lpName,
[in] DWORD nMaxMessageSize,
[in] DWORD lReadTimeout,
[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
lpName
: mailslot의 이름
메일 슬롯은 이름은 형식을 지켜야 한다
또한, 이름 필드는 고유해야 하며 백슬라이시로 구분된 여러 수준의 의사 디렉터리를 포함할 수 있다
[형식] \\.\mailslot\[path]이름
nMaxMessageSize
: mailslot에 쓸 수 있는 단일 메시지의 최대 크기(바이트)
이 값을 0으로 설정할 경우, 시스템이 허용하는 최대 크기로 지정된다
lReadTimeout
: 시간 제한(밀리초)이 발생하기 전에 읽기 작업이 mailslot에 메시지를 쓸 때까지 대기할 수 있는 시간
lpSecurityAttributes
: 반환된 핸들을 자식 프로세스에서 상속할 수 있는지 여부를 결정한다
https://learn.microsoft.com/ko-kr/windows/win32/api/winbase/nf-winbase-createmailslota
* 커널 오브젝트의 상태
Signaled - 신호를 받은 상태, Non-Signaled - 신호를 받지 않은 상태
프로세스가 커널 오브젝트를 생성시 Non-Signaled 상태
프로세스가 종료시 Signaled 상태
* WaitForSingleObject, WaitForMultipleObjects
커널 오브젝트를 감시하는 역할
Non-Signaled 상태에 있을 때는 함수를 반환하지 않고 블로킹 상태에 있다가
Signaled 상태가 되면 함수를 빠져나오는 특성이 있다
ㄴ 블로킹?
: 특정 조건이 충족될 때까지 현재 스레드(또는 프로세스)가 실행을 멈추고 기다리는 상태
https://learn.microsoft.com/ko-kr/windows/win32/api/synchapi/nf-synchapi-waitforsingleobject
https://learn.microsoft.com/ko-kr/windows/win32/api/synchapi/nf-synchapi-waitformultipleobjects
* GetExitCodeProcess
부모 프로세스가 자식 프로세스의 종료코드를 얻기
'IT공부 > IT서적' 카테고리의 다른 글
[윤성우 열혈 C프로그래밍] 디버깅 빌드, 어셈블리 코드 - Chapter 4 (0) | 2025.01.12 |
---|---|
[윤성우 열혈 C프로그래밍] 디버깅 빌드, 어셈블리 코드 - Chapter1, Chapter2, Chapter3 (0) | 2025.01.12 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 6장. 커널 오브젝트와 오브젝트 핸들 (0) | 2024.12.31 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 5장. 프로세스의 생성과 소멸 (0) | 2024.12.24 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 4장. 컴퓨터 구조 - 2 (0) | 2024.12.24 |