SYSTEM CALL: semget(); PROTOTYPE: int semget ( key_t key, int nsems, int semflg ); RETURNS: semaphore set IPC identifier on success -1 on error: errno = EACCESS (permission denied) EEXIST (set exists, cannot create (IPC_EXCL)) EIDRM (set is marked for deletion) ENOENT (set does not exist, no IPC_CREAT was used) ENOMEM (Not enough memory to create new set) ENOSPC (Maximum set limit exceeded) NOTES:
시스템 V IPC의 다른 형태들처럼 부가적인 8진 모드가 세마퍼 집합의 허가사항 형태에 마스크로 OR될 수 있다.
nsems 아규먼트는 새 집합안에서 만들어져야 하는 세마퍼의 갯수를 지정한다. 이것은 앞에서 설명했던 가상의 인쇄방의 프린터의 갯수를 의미한다. 집합안의 초ㅐ대 세마퍼의 갯수는 linux/sem.h에 정의 되어있다.
#define SEMMSL 32 /* <=512 id당 세마퍼의 최대 갯수 */이미 존재하는 집합을 명확히 열고 있다면, nsems 아규먼트는 무시됨에 주목해라.
세마퍼 집합을 만들고 여는 wrapper 함수를 만들어 보자:
int open_semaphore_set( key_t keyval, int numsems ) { int sid; if ( ! numsems ) return(-1); if((sid = semget( mykey, numsems, IPC_CREAT | 0660 )) == -1) { return(-1); } return(sid); }
Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved
Email To:Webmaster ,
Another address
LAST UPDATE Nov 25,1997
Created Nov 24,1997