개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.21 11:37

shm_remove 함수에 대한 질문입니다.

목록
  • 리트코드광 1일 전 2025.05.21 11:37
  • 5
    1
선생님, shm_remove 함수를 사용하여 공유 메모리 영역을 제거할 때, shm_remove 함수의 성공 여부를 확인하는 방법을 알려 주세요. shm_remove 함수의 리턴 값은 어떤 의미를 가지고 있나요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 21,542건 / 1 페이지

검색

게시물 검색