iPC 3

semget. semop, semctl 함수 예제

간단하게 리소스 카운터라고 생각해도 되는데 일단은 데드락 피하기 위한 기술 중의 하나라고 한다.. 실제 어디다 써먹을지는 아직 모르겠지만.. 이거보다는 개인적으로 뮤텍스를 더 자주 쓰는듯 싶네.. 소스코드 출처 : http://forum.falinux.com/zbxe/?document_srl=428639 int semget ( key_t key, int nsems, int semflg ) 세마포어 식별자를 가지고 오는 함수다. key_t key 시스템에서 세머포어를 식별하는 키 번호 int nsems 세마포어 집합 내의 세마포어 개수로 접급 제한하려는 세마포어 자원의 개수 int semflg 동작 옵션 ( IPC_CREATE와 IPC_EXCL이 있다.) int semctl ( int semid, int ..

엔지니어 2012.07.17

mmap / munmap 함수 예제

파일이나 디바이스를 주소 공간 메모리에 대응시키는 방식인데 일종의 IPC 통신으로 사용가능하다. 매우 빠름. 출처 : 소스코드 http://www.cs.purdue.edu/homes/fahmy/cs503/mmap.txt void* mmap(void* start, size_t length, int prot, int flags, int fd, off_t offset); 파일이나 디바이스를 응용 프로그램의 주소 공간 메모리에 대응시킨다. 1인자 => 시작 포인터 주소 (아래의 예제 참조) 2인자 => 파일이나 주소공간의 메모리 크기 3인자 => PROT 설정 (읽기, 쓰기, 접근권한, 실행) 4인자 => flags는 다른 프로세스와 공유할지 안할지를 결정한다. 5인자 => fd는 쓰거나 읽기용으로 열린 fd값..

엔지니어 2012.07.17

msgsnd/ msgrcv 함수 예제

출처.: http://www.falinux.com/ IPC의 시작인 메시지큐 통신이다. int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); int msqid 메시지 큐 식별자 , msgget 함수의 리턴값이다. void *msgp 전송할 자료, void 포인터니까 아무 자료형이나 덮어쓰면된다. size_t msgsz 전송할 자료의 크기, 자료가 구조체건 뭐건 sizeof로 정확한 크기면 된다. int msgflg 동작 옵션, 큐에 공간이 있을떄까지 기다리면 0, 여유공간 없으면 복귀 시킬경우, IPC_NOWAIT. ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int ..

엔지니어 2012.07.12