목록K 개발자 (145)
K 개발자
하드 링크 하드 링크hard link는 파일에 접근할 수 있는 파일명을 새로 생성하는 것이다. 하드 링크는 기존 파일과 동일한 inode를 사용한다. 하드 링크를 생성하면 inode에 저장된 링크 개수link count가 증가한다. 하드 링크 생성 : link(2) #include int link(const char *existing, const char *new); // existing : 기존 파일의 경로, new : 새로 생성할 링크의 경로 심볼릭 링크 심볼릭 링크symbolic link는 기존 파일에 접근할 수 있는 다른 파일을 만든다. 기존 파일과 다른 inode를 사용하며, 기존 파일의 경로를 저장한다. 심볼릭 링크 생성 : symlink(2) #include int symlink(const ..
st_mode stat 구조체의 st_mode 항목에는 파일의 종류와 접근 권한 정보가 저장된다. 파일의 종류 검색 파일의 종류를 검색하는 데 상수와 매크로를 이용할 수 있다. 상수를 이용한 파일 종류 검색 에 파일의 종류 검색과 관련해 상수가 정의되어 있다. 매크로를 이용한 파일 종류 검색 파일에는 상수 외에 매크로도 정의되어 있다. 파일 접근 권한 검색 상수를 이용한 파일 접근 권한 검색 st_mode의 값에서 파일의 접근 권한을 검색할 때도 에 정의된 상수를 이용한다. 함수를 사용한 접근 권한 검색 : access(2) #include int access(const char *path, int amode); // path : 접근 권한을 알고자 하는 파일의 경로, amode : 접근 권한 파일 접근..
파일 정보 검색 파일명으로 파일 정보 검색 : stat(2) #include #include #include int stat(const char *restrict path, struct stat *buf); // path : 정보를 알고자 하는 파일명, buf : 검색한 파일 정보를 저장할 구조체 주소 stat 구조체 stat 함수로 검색한 inode 정보는 stat 구조체에 저장된다. struct stat { dev_t st_dev; ino_t st_ino; mode_t st_mode; nlink_t st_nlink; uid_t st_uid; gid_t st_gid; dev_t st_rdev; off_t st_size; time_t st_atime; time_t st_mtime; time_t st_ct..
파일의 종류 유닉스에서 파일은 크게 일반 파일과 특수 파일 그리고 디렉토리로 구분할 수 있다. 일반 파일 텍스트 파일, 실행 파일, 라이브러리, 이미지 등 유닉스에서 사용하는 대부분의 파일이 일반 파일에 해당한다. 특수 파일 유닉스에서 장치를 사용하려면 해당 장치와 연관된 특수 파일을 이용해야 한다. 다른 파일과 달리 장치 관련 특수 파일을 장치 파일이라고도 한다. 디렉토리 유닉스에서는 디렉토리도 파일로 취급한다. 디렉토리와 연관된 데이터 블록은 해당 디렉토리에 속한 파일의 목록과 inode를 저장한다. 파일의 종류 구분 ls -l 명령을 사용하면 파일의 종류를 알 수 있다. 파일의 구성 요소 유닉스에서 파일은 파일명, inode, 데이터 블록으로 구성된다. 파일명 파일명은 사용자가 파일에 접근할 때 사..
임시 파일 사용 프로그램을 수행하는 과정에서 데이터를 파일에 임시로 저장해야 할 때가 있다. 그런데 같은 프로그램을 여러 사용자가 동시에 사용하는 경우 임시 파일명이 동일하면 문제가 발생할 수 있다. 따라서 임시 파일명이 중복되지 않도록 생성하는 방법이 필요하다. 임시 파일명 생성 임시 파일명 생성 : tmpnam(3) #include char *tmpnam(char *s); // s : 파일명을 저장할 버퍼의 시작 주소 접두어를 지정한 임시 파일명 생성 : tempnam(3) #include char *tempnam(const char *dir, const char *pfx); // dir : 임시 파일명의 디렉토리, pfx : 임시 파일명의 접두어 템플릿을 지정한 임시 파일명 생성 : mktemp(3..
파일 기술자와 파일 포인터 간 변환 저수준 파일 입출력에서는 열린 파일을 가리킬 때 파일 기술자를 사용하며, 고수준 파일 입출력에서는 파일 포인터를 사용한다. 파일 기술자와 파일 포인터를 상호 변환할 수 있다. 파일 포인터 생성 : fdopen(3) #include FILE *fdopen(int fildes, const char *mode); // fildes : 파일 기술자, mode : 열기 모드 파일 기술자 생성 : fileno(3) #include int fileno(FILE *stream); // stream : 파일 포인터
파일 포인터 저수준 파일 입출력에서는 열린 파일을 가리키는 데 파일 기술자를 사용하는 한편, 고수준 파일 입출력에서는 파일 포인터file pointer를 사용한다. 파일 포인터는 디스크에서 메모리로 읽어온 파일의 위치(주소)에 관한 정보를 담고 있는 포인터다. 또한 파일 기술자는 정수형이지만, 파일 포인터는 시스템 헤더 파일에 정의되어 있는 FILE * 형이다. 파일 열기와 닫기 파일 열기 : fopen(3) #include FILE *fopen(const char *filename, const char *mode); // filename : 파일의 경로, mode : 파일 열기 모드 파일 닫기 : fclose(3) #include int fclose(FILE *stream); // stream : fo..
파일 기술자 모든 저수준 파일 입출력 함수는 파일 기술자file descriptor를 사용한다. 파일 기술자는 현재 열려 있는 파일을 구분할 목적으로 유닉스가 붙여놓은 번호로, 저수준 파일 입출력에서 열린 파일을 참조하는 데 사용하는 지시자 역할을 한다. 파일 기술자는 정수값으로, open 함수를 사용해 파일을 열었을 때 부여된다. 파일 생성과 열고 닫기 파일 열기 : open(2) #include #include #include int open(const char *path, int oflag [, mode_t mode]); // path : 열려는 파일이 있는 경로, mode : 접근 권한, oflag : 파일 상태 플래그 파일 생성 : creat(2) #include #inlcude int crea..