기본 콘텐츠로 건너뛰기

ftok

IPC ... Inter Process Communication. 뭐 말 그대로 프로세스끼리 말하는 통신하는 방식이다. IPC에는 여러가지 방식이 있겠지만, 일반적으로 메시지큐, 공유메모리, 세마포어 이 세가지를 읊곤 한다. (소켓도 IPC라고!) 내 머릿속에서 이러한 세가지 단어를 엎고 있는 단어가 있었으니 이름하야 'SysV'.

전화회사(AT&T)에서 1983년에 하드웨어 팔아먹으려고(스위치 용도일까?) 만든 OS가 있었으니, 이름하여 'System 5(SysV)'. 이게 큰 히트를 치면서 현대 UNIX 구조의 기초를 만들게 되었다. 이때 첫 버전인 'System 5 Release 1(SVR1)에서 이미 위에서 언급한 IPC I/F를 가지고 있었다. 참조:  http://en.wikipedia.org/wiki/System_V

오늘 알아볼(것도 없는) ftok 함수는 위에서 언급한 SysV의 IPC I/F에서 사용하는 key_t을 만들기 위한 것이다. 일단 IPC객체를 하나 얻어오려면 커널이 알아볼 수 있는 키가 필요하다. (리눅스에서 내놔야 int형이지만...) 이 키를 만드려면 ftok함수를 써서 만들어야하며, 인자는 파일패스와 8bit 프로젝트값이다. 이 두가지 인자로 커널이 알아볼 수 있는 키가 만들어지고, 이것을 통해 IPC객체를 커널에 등록하고, 프로세스와 연결할 수 있는 것이다.

사실 과거에서 지금까지 많이 쓰이는 유구한 전통이 있는 함수라고 하는데, 학교 다닐 때 한 두 번 써본 것이 전부다. 그래서 실은 저 키를 만드는 과정이나, 주의 사항도 써야겠지만 귀찮아서 그냥 RTFM...

SysV가 가진 IPC I/F가 잘못 만들어진 것은 아니지만, 개인 취향으로 POSIX가 새로 규정한 IPC I/F가 좀더 끌리기에 그것을 쓰고 있다. (장점 약간과 정리한 느낌을 주는 I/F 정도가 이유라면 이유랄까...)

다음에는 POSIX에서 규정한 IPC I/F를 소개할까 한다. (다만 국내외 문서에서 POSIX IPC I/F를 사용한 예를 찾기가 참담하다.)

댓글

이 블로그의 인기 게시물

Winget 해시 무시하기

가끔씩 Winget 에서 패키지를 다운로드 했을 때, "설치 관리자 해시가 일치하지 않습니다." 오류가 뜰 때가 있다. 보안 이슈가 있지만, 그냥 무시하고 싶을 때, 아래 순서로 무시해준다. 관리자 권한 winget settings --enable InstallerHashOverride 설치 winget install --ignore-security-hash --id NirSoft.NirCmd

Windows 11 기존 컨텍스트 메뉴 사용

Windows 11 에서, 컨텍스트 메뉴가 지저분한게 싫었는지, 모던 컨텍스트 메뉴라고 따로 필요한 것만 정리해서 보여준다. 그러나 이게 좀 불편하고, 기존의 꼭 필요한 메뉴가 보이지 않아 굳이 한 번 더 기존 메뉴를 불러오는데, 모든 앱들이 모던 컨텍스트 메뉴로 옮길 때까지는 기존 컨텍스트 메뉴를 기본으로 볼 수 있는 방법이 있다. REM 관리자 권한 REM 기존 컨텍스트 메뉴 reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve REM 모던 컨텍스트 메뉴로 되돌리기 reg.exe delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f 이거 하고 탐색기를 재시작한다. 참조:  Restore old Right-click Context menu in Windows 11