
sem_get 함수는 세마포어를 생성하고 초기화하는 함수입니다. 성공적으로 세마포어를 생성하고 초기화한 경우, 세마포어의 ID를 반환합니다. 실패한 경우, -1을 반환합니다.
#hostingforum.kr
c
int sem_id = sem_get(key, nsems, 0, 0);
- key: 세마포어의 키입니다.
- nsems: 생성할 세마포어의 개수입니다.
- 0: 세마포어의 초기값입니다.
- 0: 세마포어의 권한입니다.
에러 코드를 얻는 방법은 다음과 같습니다.
#hostingforum.kr
c
if (sem_id == -1) {
int err = errno;
// 에러 코드를 처리하는 코드를 작성합니다.
}
errno 변수는 에러 코드를 저장하는 변수입니다.
또한, sem_get 함수의 실패를 처리하는 방법은 다음과 같습니다.
#hostingforum.kr
c
if (sem_id == -1) {
// 에러 코드를 처리하는 코드를 작성합니다.
} else {
// 세마포어를 초기화하는 코드를 작성합니다.
sem_init(sem_id, 0, 0);
}
sem_init 함수는 세마포어를 초기화하는 함수입니다.
#hostingforum.kr
c
int sem_init(sem_t *sem, int pshared, unsigned int value);
- sem: 초기화할 세마포어의 포인터입니다.
- pshared: 세마포어의 권한입니다.
- value: 세마포어의 초기값입니다.
세마포어를 초기화한 후, sem_post 함수를 사용하여 세마포어의 값을 증가시킬 수 있습니다.
#hostingforum.kr
c
sem_post(sem_id);
세마포어의 값을 감소시키려면 sem_wait 함수를 사용합니다.
#hostingforum.kr
c
sem_wait(sem_id);
2025-05-22 17:27