1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include<cstdio> #include<tchar.h> #include<Windows.h> int _tmain(){ HANDLE hMailSlot; DWORD sz; hMailSlot = CreateMailslot( _T("\\\\.\\mailslot\\tmp"), 0, MAILSLOT_WAIT_FOREVER, NULL ); if (hMailSlot == INVALID_HANDLE_VALUE){ puts("메일 슬롯 생성 실패"); return -1; } while (1){ TCHAR msg[52] = { 0, }; if (!ReadFile(hMailSlot, msg, 50, &sz, NULL )){ _tprintf(_T("읽기 실패\n")); return -1; } _putts(msg); } return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include<stdio.h> #include<tchar.h> #include<Windows.h> int _tmain(){ HANDLE hMailSlot; DWORD sz; hMailSlot = CreateFile( L"\\\\.\\mailslot\\tmp", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hMailSlot == INVALID_HANDLE_VALUE){ puts("메일 슬롯 생성 실패"); return -1; } TCHAR msg[52]; while (1){ wprintf(_T(": ")); _getws_s(msg); if (!WriteFile(hMailSlot, msg, 50, &sz, NULL)){ _tprintf(_T("쓰기 실패\n")); return -1; } } return 0; } |
HANDLE WINAPI CreateMailslot( _In_ LPCTSTR lpName, _In_ DWORD nMaxMessageSize, _In_ DWORD lReadTimeout, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes ); 성공하면 핸들 값을, 실패하면 INVALID_HANDLE_VALUE 를 리턴 |
|
출처 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
IPC = Inter-Process Communication, 프로세스 간의 통신
서로 다른 프로세스끼리 같은 메모리를 공유할 수 없어서 CreateFIle로 MailSlot을 만들어놓고 MailSlot을 매개로 서로 통신하는 듯 하다.
메일 슬롯은 단방향 통신이다.
윤성우, "뇌를 자극하는 윈도우즈 시스템 프로그래밍"
정독하고
이전에 읽다 포기한 윈도우즈 프로그래밍 책 읽으려고 하는 중.
'프로그래밍 > Windows' 카테고리의 다른 글
사용자 입력 글자수 제한하기 (0) | 2014.07.04 |
---|---|
C++ WinForm Frame (0) | 2014.07.04 |
쓰레드 동기화와 WAIT_ABANDONED (7) | 2014.06.02 |
GetExitCodeProcess (0) | 2014.05.25 |
(싱글 더블 와이드) 함수 정리 (0) | 2014.05.25 |
tchar.h (1) | 2014.05.13 |
사용자 정의 에러 함수 _invalid_parameter_handler (0) | 2014.05.01 |
안전 문자열 함수 _tcscpy_s (0) | 2014.04.30 |
윈도우즈 에러 핸들링 GetLasterror / FormatMessage (0) | 2014.04.30 |
윈도우 가시모드/비가시모드 (0) | 2014.03.28 |
댓글