개발자 Q&A

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

2025.03.20 19:38

posix_mknod 함수 이해에 도움을 요청합니다.

목록
  • AWS매니아 1일 전 2025.03.20 19:38
  • 3
    1
제가 posix_mknod 함수를 공부하고 있는데,
파일 타입을 지정할 때 mode 변수에 사용되는 특수한 값들을 이해하지 못하고 있습니다.

mode 변수의 값이 0이면, 파일 타입은 디렉토리 또는 특수 파일로 결정된다고 합니다.
하지만, mode 변수에 0이 아닌 값을 지정하면, 파일 타입은 mode 변수의 값에 따라 결정된다고 합니다.

mode 변수의 값이 0이 아닌 경우, 파일 타입은 어떻게 결정되나요?
그리고, mode 변수의 값이 0이면, 디렉토리 또는 특수 파일이 어떻게 결정되는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    posix_mknod 함수에서 mode 변수는 파일의 권한을 지정하는 데 사용됩니다. mode 변수의 값은 3자리 이진수로 구성되며, 각 자리는 다음과 같이 의미를 갖습니다.

    - 최상위 비트 (8의 제곱): S_ISUID (소유자 ID 설정)
    - 2번째 비트 (4의 제곱): S_ISGID (그룹 ID 설정)
    - 3번째 비트 (2의 제곱): S_ISVTX (스태틱 디렉토리)
    - 4번째 비트 (1의 제곱): S_IRUSR (읽기 권한, 소유자)
    - 5번째 비트 (1의 제곱): S_IWUSR (쓰기 권한, 소유자)
    - 6번째 비트 (1의 제곱): S_IXUSR (실행 권한, 소유자)
    - 7번째 비트 (1의 제곱): S_IRGRP (읽기 권한, 그룹)
    - 8번째 비트 (1의 제곱): S_IWGRP (쓰기 권한, 그룹)
    - 9번째 비트 (1의 제곱): S_IXGRP (실행 권한, 그룹)
    - 10번째 비트 (1의 제곱): S_IROTH (읽기 권한, 기타)
    - 11번째 비트 (1의 제곱): S_IWOTH (쓰기 권한, 기타)
    - 12번째 비트 (1의 제곱): S_IXOTH (실행 권한, 기타)

    mode 변수의 값이 0이면, 파일 타입은 디렉토리 또는 특수 파일로 결정됩니다. 이때, 디렉토리 또는 특수 파일은 다음 조건 중 하나를 만족할 때 결정됩니다.

    - S_ISDIR (S_IFMT & mode == S_IFMT) : 디렉토리
    - S_ISFIFO (S_IFMT & mode == S_IFIFO) : FIFO
    - S_ISREG (S_IFMT & mode == S_IFREG) : 일반 파일
    - S_ISLNK (S_IFMT & mode == S_IFLNK) : 심볼릭 링크
    - S_ISSOCK (S_IFMT & mode == S_IFSOCK) : 소켓

    mode 변수의 값이 0이 아닌 경우, 파일 타입은 mode 변수의 값에 따라 결정됩니다. 예를 들어, mode 변수의 값이 0x1000 (400, 8진수 0400)인 경우, 파일 타입은 FIFO로 결정됩니다.

    2025-03-20 19:39

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

검색

게시물 검색