세마포어 설정을 확인한다.
#include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int semget(key_t key, int nsems, int semflg)
key 의 값과 일치하는 세마포어(:12) 설정확인자를 반환한다. sem_num 은 세마포어를 생성할것인지, 아니면 이미 만들어진 세마포어에 접근할것인지를 결정하기 위해서 사용한다.
semflg 는 세마포어 생성특성을 결정하기 위해서 사용한다. 즉 세마포를 생성하는데 있어서 이미 만들어진 세마포어가 있다면 어떤 행동을 취할것인지, 그리고 접근권한은 어떻게 할것인지등을 지정하기 위해서 사용한다.
만약 semflg 가 IPC_PRIVATE 가 아니고 주어진 key 값으로 이미 만들어진 세마포어와 중복되지 않으면 새로 생성될것이다. 만약 IPC_PRIVATE 이고 중복된 key 값이 있다면 생성에 실패하고 에러를 리턴할것이다.
성공할경우 세모포어 설정확인자(양의 정수)이며, 그렇지 않을경우 -1 이 반환되고 errno 가 설정된다.
다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.
세마포어 접근을 위한 key 가 존재하지만, 호출된 프로세스가 세마포어에 접근권한을 갖지 못할경우
semflg 가 IPC_CREATE 와 IPC_EXECL 로 설정되어 있고 사용된 key 가 이미 존재하는 세마포어일경우. (open(2) 의 O_CREAT 와 O_EXECL 조합과 동일한 효과이다.)
세마포어 설정이 되어야 하지만 시스템에 메모리가 충분치 않아서 세마포어 설정이 안될경우
세마포어 설정이 되어야 하지만 시스템의 세마포어 생성가능한 최대값 범위를 넘겨버렸을경우.
#include <errno.h> int main() { int semid; int status; if ((semid = semget(12345, 1, IPC_CREAT|0666)) == -1) { perror("semget error "); return 1; } printf("success semid is %d : %d %d\n", status, semid, errno); }
[root@localhost root]# ipcs -s ------ Semaphore Arrays -------- key semid owner perms nsems status 0x00003039 32768 root 666 1
Copyrights © - Joinc, All Rights Reserved. Inherited From - Yundream Rebranded By - Joonphil
1장. semget(2)
세마포어 설정을 확인한다.
1.1절. 사용법
1.2절. 설명
key 의 값과 일치하는 세마포어(:12) 설정확인자를 반환한다. sem_num 은 세마포어를 생성할것인지, 아니면 이미 만들어진 세마포어에 접근할것인지를 결정하기 위해서 사용한다.
semflg 는 세마포어 생성특성을 결정하기 위해서 사용한다. 즉 세마포를 생성하는데 있어서 이미 만들어진 세마포어가 있다면 어떤 행동을 취할것인지, 그리고 접근권한은 어떻게 할것인지등을 지정하기 위해서 사용한다.
만약 semflg 가 IPC_PRIVATE 가 아니고 주어진 key 값으로 이미 만들어진 세마포어와 중복되지 않으면 새로 생성될것이다. 만약 IPC_PRIVATE 이고 중복된 key 값이 있다면 생성에 실패하고 에러를 리턴할것이다.
1.3절. 반환값
성공할경우 세모포어 설정확인자(양의 정수)이며, 그렇지 않을경우 -1 이 반환되고 errno 가 설정된다.
1.4절. 에러
다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.
세마포어 접근을 위한 key 가 존재하지만, 호출된 프로세스가 세마포어에 접근권한을 갖지 못할경우
semflg 가 IPC_CREATE 와 IPC_EXECL 로 설정되어 있고 사용된 key 가 이미 존재하는 세마포어일경우. (open(2) 의 O_CREAT 와 O_EXECL 조합과 동일한 효과이다.)
세마포어 설정이 되어야 하지만 시스템에 메모리가 충분치 않아서 세마포어 설정이 안될경우
세마포어 설정이 되어야 하지만 시스템의 세마포어 생성가능한 최대값 범위를 넘겨버렸을경우.
1.5절. 예제
Recent Posts
Archive Posts
Tags