SEMCTL
Section: Linux Programmer's Manual (2)
Updated: November 1, 1993
Index
Return to Main Contents
이름
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
-
인수
cmd
가
IPC_SET
또는
IPC_RMID
값을 갖지만, 호출 프로세스 유효 사용자 ID는 명령을 실행시킬 수 있는 충분치 않은 특권들을 갖는다.
- ERANGE
-
인수
cmd
는
SETALL
또는
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@asp-linux.co.kr> 2000년 7월 29일
배성훈 <plodder@kldp.org> 2000년 11월 18일
한글 Manpage 프로젝트 (http://man.kldp.org) 2005년 2월 14일
Index
- 이름
-
- 사용법
-
- 설명
-
- 반환값
-
- 에러
-
- 주의
-
- 호환
-
- 관련 항목
-
- 번역
-
This document was created by
man2html,
using the manual pages.
Time: 05:17:55 GMT, February 14, 2005