2sjin
2sjin
2sjin

블로그 메뉴

  • My GitHub
  • 전체 게시글
    • UNIX 이론 정리
    • Linux
      • Linux 관련 노하우
      • Linux 과제
      • OracleCloud & Ubuntu
      • Tomcat Server
      • MySQL Server
      • 구름 OS
      • 라즈베리파이4
    • 데이터베이스
      • DB 관련 노하우
      • DB 과제
      • DB 프로젝트
    • Unity
    • Computer Science
      • 통신 & 네트워크
      • 자료구조 & 알고리즘
      • 운영체제
      • 정보보호
      • 기타 분야
    • 소프트웨어
      • 소프트웨어공학
      • 프로그래밍 언어

공지사항

인기 글

태그

  • 개인 Term Project
  • 팀 프로젝트

최근 글

티스토리

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
2sjin

2sjin

UNIX 이론 정리

inode 자료구조 및 stat() 구조체

2022. 10. 3. 19:22

1. inode 자료구조

1. inode란?

  • 파일 시스템 내에서 파일을 관리하는 자료구조
  • ‘index-node’라고도 한다.

 

2. inode에 포함된 정보

  • 파일 크기(Bytes) 정보
  • 파일 주소 정보(39Bytes)
  • 링크 수: 이 아이노드에 대한 디렉터리 참조 수
  • 사용자 식별번호(UID): 파일 소유자
  • 그룹 식별번호(GID): 파일 소유자의 그룹
  • 파일 모드: Permission 등 파일 접근 관련 정보(16bit)
  • 파일을 생성한 날짜/시각
  • 마지막으로 파일에 접근한 날짜/시각
  • 마지막으로 파일을 수정한 날짜/시각
  • 마지막으로 아이노드를 수정한 날짜/시각

 

3. 파일 모드

  • Permission 등 파일 접근 관련 정보를 저장하는 16bit 플래그
  • 파일 모드의 구조
비트 내용
12~15 파일 형식: 일반 파일(-), 디렉터리(d), 블록 특수 파일(b), 문자 특수 파일(c)
9~11 실행 플래그
8 소유자(User) 읽기(Read) 허가
7 소유자(User) 쓰기(Write) 허가
6 소유자(User) 실행(Execute) 허가
5 그룹(Group) 읽기(Read) 허가
4 그룹(Group) 쓰기(Write) 허가
3 그룹(Group) 실행(Execute) 허가
2 다른 사용자(Other) 읽기(Read) 허가
1 다른 사용자(Other) 쓰기(Write) 허가
0 다른 사용자(Other) 실행(Execute) 허가

 


2. stat 구조체

1) stat 구조체란?

inode가 가지고 있는 정보 중 필요한 정보를 사용자에게 읽어주는 역할을 하는 구조체

 

2) stat 구조체 및 멤버

struct stat {
    dev_t st_dev;    // 장치 정보(major number, minor number 등)
    ino_t st_ino;    // 파일의 inode 정보
    mode_t st_mode;    // 파일 허가권 모드
    nlink_t st_nlink;    // 파일 링크의 수
    uid_t st_uid;    // 파일 소유자의 사용자 식별번호(UID)
    gid_t st_gid;    // 파일 소유자가 속한 그룹 식별번호(GID)
    dev_t st_rdev;    // raw 장치의 정보(major num, minor num 등)
    off_t st_size;    // 파일 크기(Bytes 단위)
    time_t st_atime;    // 마지막으로 파일을 읽거나 실행한 시간 정보
    time_t st_mtime;    // 마지막으로 파일을 쓰기(변경)한 시간 정보
    time_t st_xtime;    // 마지막으로 inode 내용을 변경한 시간 정보
    long st_blksize;    // I/O 파일 시스템 블록의 크기 정보
    long st_blocks;    // 파일에 할당된 블록 수
};

 

 

3) stat() 함수

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>


int stat(const char *file_name, struct stat *buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *file_name, struct stat *buf);

 

  • stat(): 파일의 상태를 알아오는 함수, file_name(1번째 인자)의 상태를 얻어와서 buf(2번째 인자)에 채워진다.
  • fstat(): open 등을 통해 만들어진 파일 지시자를 인자로 받아들이는 stat() 함수
  • lstat(): 링크 파일에 연결된 원본 파일의 상태를 얻어오는 stat() 함수
 

'UNIX 이론 정리' 카테고리의 다른 글

UNIX 파일 시스템, 원격 파일 시스템(NFS)  (1) 2022.10.03
UNIX 프로세스 동작 - foreground 프로세스, background 프로세스  (0) 2022.10.03
UNIX 입출력 장치 관리 - 특수 파일(디바이스 파일)  (0) 2022.10.03
UNIX 커널 내부 구조  (0) 2022.10.03
UNIX 시스템의 특징, UNIX 가상 메모리 관리  (0) 2022.10.03
'UNIX 이론 정리' 카테고리의 다른 글
  • UNIX 파일 시스템, 원격 파일 시스템(NFS)
  • UNIX 프로세스 동작 - foreground 프로세스, background 프로세스
  • UNIX 입출력 장치 관리 - 특수 파일(디바이스 파일)
  • UNIX 커널 내부 구조
2sjin
2sjin

티스토리툴바