
shm_remove 함수의 성공 여부를 확인하는 방법은 리턴 값의 부호를 확인하는 것입니다. 리턴 값이 0이면 성공, 음수이면 실패로 간주합니다.
shm_remove 함수의 리턴 값은 다음과 같은 의미를 가지고 있습니다.
- 0 : 성공
- -1 : 에러 발생 (shm_remove 함수가 실패한 경우)
- -2 : 공유 메모리 영역이 존재하지 않는 경우
예를 들어, 다음 코드는 shm_remove 함수의 성공 여부를 확인하는 방법을 보여줍니다.
#hostingforum.kr
c
#include
int main() {
int shm_id = shmget(IPC_PRIVATE, 1024, IPC_CREAT | 0644);
if (shm_id == -1) {
perror("shmget");
return 1;
}
// 공유 메모리 영역에 데이터를 저장합니다.
char *shm_ptr = shmat(shm_id, NULL, 0);
if (shm_ptr == (char *) -1) {
perror("shmat");
shmctl(shm_id, IPC_RMID, NULL);
return 1;
}
// 공유 메모리 영역을 제거합니다.
if (shmctl(shm_id, IPC_RMID, NULL) == -1) {
perror("shmctl");
return 1;
}
// shm_remove 함수의 성공 여부를 확인합니다.
if (shm_remove(shm_id) == -1) {
perror("shm_remove");
return 1;
}
return 0;
}
이 코드는 공유 메모리 영역을 제거하는 데 성공했는지 확인합니다. 만약 shm_remove 함수가 실패하면 perror 함수를 호출하여 오류 메시지를 출력합니다.
2025-05-21 11:38