semget

Autres langues

Langue: ko

Version: November 1, 1993 (fedora - 25/11/07)

Section: 2 (Appels système)

이름

semget - 세마포어 설정을 확인한다.

사용법

 # include <sys/types.h>
 # include <sys/ipc.h>
 # include <sys/sem.h>
 

int semget ( key_t key, int nsems, int semflg )

설명

기능은 인수 key 의 값과 일치하는 세마포어 설정 확인자(identifier)를 반환한다. nsems 세마포어의 새로운 설정은 keyIPC_PRIVATE 값을 갖거나 key 가 존재하는 모든 세마포어 설정이 key 와 일치하지 않는 IPC_PRIVATE 가 아니면 생성되고, IPC_CREATsemflg 에 나타나지 않는다.(i.e. semflgIPC_CREAT 는 0이 아니다). 필드 IPC_CREATIPC_EXCLsemflg 에 존재는 같은 룰로 작동한다.

생성시, 인수 semflg 의 낮은 9비트는 같은 포맷의 세마포어 설정에 접근 권한을 정의한다.

게다가 생성하는 동안 시스템 호출은 시스템 세마포어 설정데이타 구조 semid_ds 를 다음과 같이 초기화한다:

sem_perm.cuidsem_perm.uid 는 호출한 프로세스의 유효 사용자-ID로 설정된다.
sem_perm.cgidsem_perm.gid 는 호출한 프로세스의 유효한 그룹-ID로 설정된다.
sem_perm.mode 의 가장 낮은 9비트는 semflg 의 가장 낮은 9비트로 설정된다.
sem_nsemsnsems 의 값으로 설정된다.
sem_otime 는 0으로 설정된다.
sem_ctime 는 현재시간으로 설정된다.

인수 nsems 는 시스템호출이 없을 때, 0 일 수 있다. 그 외에 nsems0 보다 크거나 semid당 세마포어의 가장 큰 수 이하이어야만 한다. (SEMMSL).

세마포어이 이미 존재한다면, 적근 권한은 입증되었고, verified, and a check is made to see if it is marked for destruction.

반환값

성공시, 반환값은 세마포어 설정 확인자(양의 정수)일 것이고, 그렇지 않으면 에러를 나타내는 errno 와 함께 -1 이 반환된다.

에러

실패값 반환을 위해, errno 는 다음 값중 하나로 설정될 것이다:
EACCES
세마포어 설정은 key 를 위해 존재하지만, 호출한 프로세스는 설정에 접근권한을 갖지 못한다.
EEXIST
세마포어 설정은 key 를 위해 존재하고 semflgIPC_CREATIPC_EXCL 를 옹호한다(asserting).
ENOENT
어떠한 시그너 설정도 key 를 위해 존재하지 않고, semflgIPC_CREAT 를 옹호하지 않는다.
ENOMEM
세마포어 설정가 설정되어져야 했지만 시스템이 새로운 데이타구조를 위한 메모리가 충분하지 않다.
ENOSPC
세마포어 설정이 생성되어져야 했지만 시스템이 시그널 설정 (SEMMNI) 의 최대값 제한이나 세마포어 (SEMMNS) 의 최대값 범위를 넘어섰다.

주의

IPC_PRIVATE 은 플래그 필드가 아니지만, key_t 타입이다. 이 특별값이 key 를 위해 사용된다면, 시스템 호출은 모두 무시되지만 semflg 의 9비트를 정렬하고 새로운 세마포어 설정을 성공적으로 생성한다.

다음은 semget 호출에 영향을 주는 세마포어 설정자원을 제한한다:

SEMMNI
시스템 세마포어 설정의 최대값범위: 정책의지.
SEMMSL
semid당 세마포어의 최대값: 구현의지(현재 500).
SEMMNS
시스템 세마포어의 최대값 범위 ; 정책의지.

버그

IPC_PRIVATE 의 사용은 다른 할당된 세마포어 설정에 접근 프로세스들을 억제한다.

데이타 구조는 설정에 시스템 호출에 의해 초기화되지 않는 각 세마포어과 일치한다.

호환

SVr4, SVID. SVr4 documents additional error conditions EINVAL, EFBIG, E2BIG, EAGAIN, ERANGE, EFAULT.

관련 항목

ftok(3), ipc(5), semctl(2), semop(2)

역자

ASPLINUX<man@asp-linux.co.kr>, 2000년 7월 29일 배성훈<plodder@kldp.org>, 2000년 11월 18일