이 름
semget − 세 마 포 어 집 합 식 별 자 를 얻 어 낸 다 .
사 용 법
# include
<sys/types.h>
# include <sys/ipc.h>
# include <sys/sem.h>
int semget ( key_t key, int nsems, int semflg )
설 명
이 함 수 는 key 의 값 에 대 응 하 는 세 마 포 어 집 합 식 별 자 를 반 환 한 다 . key 의 값 이 IPC_PRIVATE 일 경 우 , 또 는 key 의 값 이 IPC_PRIVATE 는 아 니 지 만 key 에 대 응 하 는 세 마 포 어 집 합 이 없 을 경 우 , 또 는 semflg 이 IPC_CREAT 을 포 함 할 경 우 , 즉 , semflg 과 IPC_CREAT 의 AND연 산 이 0이 아 닐 경 우 에 함 수 는 nsems 개 의 세 마 포 어 를 갖 는 새 로 운 집 합 을 만 든 다 . semflg 에 IPC_CREAT 와 IPC_EXCL 가 동 시 에 켜 져 있 는 것 은 , open(2) 함 수 의 mode 인 수 에 IPC_CREAT 와 IPC_EXCL 가 동 시 에 설 정 되 어 있 을 때 와 동 일 한 역 할 을 한 다 . 즉 , semflag 에 IPC_CREAT 와 IPC_EXCL 가 동 시 에 설 정 되 어 있 고 , key 에 해 당 하 는 세 마 포 어 가 이 미 존 재 할 때 함 수 는 실 패 한 다 .
세 마 포 어 생 성 시 , 인 수 semflg 의 낮 은 9비 트 는 세 마 포 어 집 합 에 대 한 접 근 권 한 을 정 의 한 다 . 접 근 권 한 의 형 식 은 open (2) creat (2) 시 스 템 호 출 의 접 근 권 한 설 정 시 와 동 일 하 다 . 단 , 실 행 허 가 는 시 스 템 에 의 해 주 어 지 지 않 으 며 , 세 마 포 어 집 합 에 대 한 쓰 기 권 한 은 실 질 적 으 론 변 경 권 한 을 의 미 한 다 .
게 다 가 생 성 시 시 스 템 호 출 은 시 스 템 세 마 포 어 집 합 의 데 이 타 구 조 semid_ds 를 다 음 과 같 이 초 기 화 한 다 :
sem_perm.cuid 와 sem_perm.uid 는 호 출 한 프 로 세 스 의 유 효 사 용 자 -ID로 설 정 된 다 .
sem_perm.cgid 와 sem_perm.gid 는 호 출 한 프 로 세 스 의 유 효 그 룹 -ID로 설 정 된 다 .
sem_perm.mode 의 가 장 낮 은 9비 트 는 semflg 의 가 장 낮 은 9비 트 로 설 정 된 다 .
sem_nsems 는 nsems 의 값 으 로 설 정 된 다 .
sem_otime 는 0으 로 설 정 된 다 .
sem_ctime 는 현 재 시 각 으 로 설 정 된 다 .
인 수 nsems 는 시 스 템 호 출 이 집 합 을 생 성 하 지 않 을 경 우 에 는 0 일 수 있 다 . 그 외 에 nsems 는 0 보 다 크 고 semid당 세 마 포 어 의 최 대 값 이 하 인 수 이 어 야 만 한 다 . (SEMMSL).
세 마 포 어 집 합 이 이 미 존 재 한 다 면 , 접 근 권 한 을 확 인 하 고 , 삭 제 될 것 으 로 표 시 되 어 있 는 지 를 확 인 한 다 .
반 환 값
성 공 시 , 반 환 값 은 양 의 정 수 값 을 갖 는 세 마 포 어 집 합 식 별 자 일 것 이 고 , 아 니 라 면 에 러 를 나 타 내 는 errno 와 함 께 −1 이 반 환 된 다 .
에 러
실 패 값 반 환 을 위 해 , errno 는 다 음 값 중 하 나 로 설 정 될 것 이 다 :
EACCES |
key 에 대 응 하 는 세 마 포 어 집 합 이 존 재 하 지 만 , 호 출 한 프 로 세 스 는 집 합 에 대 한 접 근 권 한 이 없 다 . | ||
EEXIST |
semflg 에 IPC_CREAT 와 IPC_EXCL 이 설 정 되 어 있 는 데 , key 에 대 응 하 는 세 마 포 어 집 합 이 이 미 존 재 한 다 . | ||
ENOENT |
key 에 대 응 하 는 세 마 포 어 집 합 이 존 재 하 지 않 고 , semflg 에 는 IPC_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 [AT] asp-linux.kr> 2000년 7월
29일
배 성 훈 <plodder [AT] kldp.org>
2000년 11월 18일
한 글 Mnapage 프 로 젝
트 (http://man.kldp.org) 2005년 2월
14일