IPC MailSlot 메일 슬롯
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을 매개로 서로 통신하는 듯 하다.
메일 슬롯은 단방향 통신이다.
윤성우, "뇌를 자극하는 윈도우즈 시스템 프로그래밍"
정독하고
이전에 읽다 포기한 윈도우즈 프로그래밍 책 읽으려고 하는 중.