Manpages

이 름

semctl − 세 마 포 어 제 어 기 .

사 용 법

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

#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
/* union semun is defined by including <sys/sem.h> */
#else
/* according to X/OPEN we have to define it ourselves */
union semun {
int val; /* SETVAL을 위 한 값 */
struct semid_ds *buf; /* IPC_STAT, IPC_SET을 위 한 버 퍼 */
unsigned short int *array; /* GETALL, SETALL을 위 한 배 열 */
struct seminfo *__buf; /* IPC_INFO을 위 한 버 퍼 */
};
#endif

int semctl (int semid, int semnum, int cmd, union semun arg)

설 명

semctl 함 수 는 semid 가 가 리 키 는 세 마 포 어 집 합 , 혹 은 이 집 합 의 semnum 번 째 세 마 포 어 (세 마 포 어 는 0 번 부 터 시 작 한 다 .)에 cmd 가 지 정 하 는 제 어 작 용 을 실 행 한 다 .

cmd 가 갖 는 값 은 다 음 과 같 다 .

IPC_STAT

arg.buf 포 인 터 가 가 리 키 는 구 조 체 에 세 마 포 어 집 합 의 데 이 타 구 조 정 보 를 복 사 한 다 . semnum 인 수 는 무 시 된 다 . 호 출 한 프 로 세 스 는 세 마 포 어 설 정 에 읽 기 권 한 이 있 어 야 한 다 .

IPC_RMID

세 마 포 어 집 합 과 데 이 타 구 조 를 즉 시 제 거 하 고 , 모 든 대 기 중 인 프 로 세 스 들 을 재 실 행 한 다 . 호 출 한 프 로 세 스 의 유 효 사 용 자 ID는 수 퍼 유 저 나 세 마 포 어 집 합 의 생 성 자 혹 은 소 유 자 중 의 하 나 여 야 한 다 . 인 수 semnum 는 무 시 된 다 .

GETALL

집 합 의 모 든 세 마 포 어 에 대 한 semval 값 을 arg.array. 에 저 장 한 다 . 변 수 semnum 는 무 시 된 다 . 호 출 한 프 로 세 스 는 세 마 포 어 설 정 에 읽 기 권 한 이 있 어 야 한 다 .

GETNCNT

semnum 번 째 세 마 포 어 의 semncnt 값 을 반 환 한 다 . 이 값 은 세 마 포 어 의 semval 값 이 증 가 하 기 를 기 다 리 고 있 는 프 로 세 스 의 수 를 나 타 낸 다 . 호 출 한 프 로 세 스 는 세 마 포 어 설 정 에 읽 기 권 한 이 있 어 야 한 다 .

GETPID

세 마 포 어 호 출 은 sempid 의 값 을 반 환 한 다 . 이 값 은 가 장 최 근 에 해 당 세 마 포 어 에 semop 호 출 을 했 던 프 로 세 스 의 pid를 나 타 낸 다 . 호 출 한 프 로 세 스 는 세 마 포 어 설 정 에 읽 기 권 한 이 있 어 야 한 다 .

GETVAL

집 합 의 semnum 번 째 세 마 포 어 에 대 한 semval 의 값 을 반 환 한 다 . 호 출 프 로 세 스 는 세 마 포 어 설 정 에 대 한 읽 기 접 근 에 있 어 특 별 한 권 한 을 갖 고 있 어 야 한 다 .

GETZCNT

시 스 템 호 출 은 집 합 의 semnum 번 째 세 마 포 어 에 대 한 semzcnt 의 값 을 반 환 한 다 .이 값 은 세 마 포 어 의 semval 값 이 0이 되 기 를 기 다 리 고 있 는 프 로 세 스 의 수 를 나 타 낸 다 . 호 출 프 로 세 스 는 세 마 포 어 설 정 에 대 한 읽 기 접 근 권 한 들 을 갖 고 있 어 야 한 다 .

SETALL

arg.array 인 수 배 열 을 사 용 하 여 집 합 의 모 든 세 마 포 어 의 semval 값 을 설 정 한 다 . 집 합 과 관 련 된 semid_ds 구 조 체 의 sem_ctime 멤 버 를 또 한 업 데 이 트 한 다 . 모 든 프 로 세 스 에 서 변 경 된 세 마 포 어 에 대 해 Undo 엔 트 리 들 은 소 거 된 다 . 대 기 열 에 서 유 휴 중 인 프 로 세 스 들 은 일 부 semval 이 0이 되 거 나 , 증 가 하 면 , 다 시 활 성 화 된 다 . 인 수 semnum 은 무 시 된 다 . 호 출 프 로 세 스 는 세 마 포 어 설 정 에 대 한 변 경 접 근 권 한 을 갖 고 있 어 야 한 다 .

SETVAL

arg.val 값 을 사 용 하 여 집 합 의 semnum 번 째 세 마 포 어 의 semval 값 을 설 정 한 다 . semid_ds 구 조 의 sem_ctime 멤 버 를 또 한 업 데 이 트 시 킨 다 . 모 든 프 로 세 스 에 서 변 경 된 세 마 포 어 에 대 해 Undo 엔 트 리 들 은 소 거 된 다 . 대 기 열 에 서 유 휴 중 인 프 로 세 스 들 은 semval 이 0이 되 거 나 , 증 가 하 면 , 다 시 활 성 화 된 다 . 인 수 semnum 은 무 시 된 다 . 호 출 프 로 세 스 는 세 마 포 어 설 정 에 대 한 변 경 접 근 권 한 을 갖 고 있 어 야 한 다 .

반 환 값

실 패 하 면 , 시 스 템 호 출 은 에 러 를 가 리 키 는 errno 와 함 께 −1 를 리 턴 한 다 . 그 렇 지 않 으 면 , 시 스 템 호 출 은 아 래 와 같 이 cmd 에 따 라 음 수 값 이 아 닌 값 을 리 턴 한 다 .

GETNCNT

semncnt 의 값 .

GETPID

sempid 의 값 .

GETVAL

semval 의 값 .

GETZCNT

semzcnt 의 값 .

에 러

실 패 리 턴 에 대 하 여 , errno 는 다 음 의 값 들 중 하 나 로 설 정 될 것 이 다 .:

EACCES

호 출 프 로 세 스 는 cmd 를 실 행 하 는 데 필 요 한 접 근 권 한 을 갖 고 있 지 않 는 다 .

EFAULT

arg.buf 에 의 해 가 리 키 는 주 소 나 arg.array 는 접 근 이 불 가 능 하 다 .

EIDRM

세 마 포 어 설 정 은 삭 제 되 었 다 .

EINVAL

cmd 또 는 semid 에 대 한 부 적 절 한 값 .

EPERM

인 수 cmdIPC_SET 또 는 IPC_RMID 값 을 갖 지 만 , 호 출 프 로 세 스 유 효 사 용 자 ID는 명 령 을 실 행 시 킬 수 있 는 충 분 치 않 은 특 권 들 을 갖 는 다 .

ERANGE

인 수 cmdSETALL 또 는 SETVAL를 갖 고 , and the value to which semval 가 0보 다 적 고 구 현 값 보 다 더 크 게 설 정 되 어 야 하 는 값 을 갖 는 다 . SEMVMX.

주 의

IPC_INFO, SEM_STAT 그 리 고 SEM_INFO 제 어 호 출 들 은 할 당 된 자 원 들 에 정 보 를 제 공 하 는 ipcs(8) 프 로 그 램 에 의 해 사 용 된 다 .

세 마 포 어 설 정 에 대 한 다 음 의 시 스 템 제 한 은 semctl 호 출 에 영 향 을 미 친 다 .

SEMVMX

semval 에 대 한 최 대 값 은 구 현 에 의 존 적 이 다 (32767).

호 환

SVr4, SVID. SVr4는 에 러 조 건 EINVAL과 EOVERFLOW에 대 한 문 서 를 작 성 한 다 .

관 련 항 목

ipc(5), shmget(2), shmat(2), shmdt(2)

번 역

ASPLINUX<man [AT] asp-linux.kr> 2000년 7월 29일
배 성 훈 <plodder [AT] kldp.org> 2000년 11월 18일
한 글 Manpage 프 로 젝 트 (http://man.kldp.org) 2005년 2월 14일