파일
파일이란?
파일은 데이터를 저장하는 수단을 말하는 추상적인 개념.
파일 시스템
데이터 저장매체에 데이터를 저장하고 관리하는 방법.
디바이스 파일
디바이스 파일이란 입출력 디바이스를 표현하는 특수 파일로 /dev 디렉토리에 저장된다.
/dev/console : 시스템 콘솔
/dev/tty : 프로세스의 터미널 논리 디바이스
/dev/null : null 디바이스로 이 디바이스에 쓰여진 모든 데이터는 사라진다.
/dev/zero : 0으로 채워진 파일을 만들 때 사용
저수준 파일 함수
시스템 콜을 통한 접근으로 파일 디스크립터를 사용한다.
파일 디스크립터란 파일 접근에 사용되는 정수 값으로 0(입력), 1(출력), 2(에러)를 의미한다.
#include <fcntl.h>#include <sys/types.h>#incldue <sys/stat.h>int open(const char * path, int oflags);int open(const char * path, int oflags, mode_t mode);
oflags 는 O_RDONLY, O_WRONLY, O_CREAT등이 있다.
mode는 S_IRUSR, S_IWUSR 등이 있다.
#include <unistd.h>int close(int fildes);
#include <unistd.h>size_t read(int fildes, void * buf, size_t nbytes);
#include <unistd.h>size_t write(int fildes, const void * buf, size_t nbytes);
고수준 파일 함수
표준 라이브러리 함수 호출을 통한 접근으로 파일 포인터(file stream 이용)를 사용한다.
#include <sys/stat.h>int mkdir(const char * path, mode_t mode);
디렉토리 생성
#include <unistd.h>int rmdir(const char * path);
디렉토리 삭제
#include <unistd.h>int chdir(const char * path);
디렉토리 변경
#include <unistd.h>char * getcwd(char * buf, size_t size);
현재 디렉토리명 반환
#include <sys/types.h>#include <dirent.h>DIR * opendir(const char * name);
디렉토리 스트림 생성
#include <sys/types.h>#include <dirent.h>struct dirent * readdir(DIR * dirp);
디렉토리 읽기
#include <sys/types.h>#include <dirent.h>vodi seekdir(DIR * dirp, long int loc);
디렉토리 엔트리 포인트를 loc 위치로 이동
#include <sys/types/h>#include <dirent.h>int closedir(DIR * dirp);
디렉토리 스트림 해제
파일 및 디렉토리 판별
#include <unistd.h>#include <stdio.h>#include <dirent.h>#include <string.h>#include <sys/stat.h>#include <stdlib.h>void printdir(char * dir, int depth) {struct dirent * entry;struct stat statbuf;if(S_ISDIR(statbuf.st_mode)) {closedir(dp);}
설명 :
opendir을 하여 읽기에 성공하였으면 dp NULL이 아닌 값을, 실패하면 NULL 값을 얻는다.
dp에는 해당 디렉토리에 대한 스트림에 대한 정보가 들어있다.
readdir(dp)를 통해 해당 디렉토리에 대한 파일정보를 struct dirent * 구조체인 entry에 넣는다.
lstat은 링크에 대한 정보를 얻는 함수로 entry->d_name이 가리키는 파일 정보를 문자열 배열에다가 저장한다.
S_ISDIR(statbuf.st_mode) 함수로 디렉토리 여부 검사를 한다.
procfs
디바이스 드라이버나 운영체제 커널에 대한 실시간 정보를 제공해주는 특수 파일 시스템이다.
'Operator System > Linux' 카테고리의 다른 글
쉘 프로그래밍 간단한 문법 (0) | 2017.10.26 |
---|---|
프로세스와 생성방법 (0) | 2017.10.26 |
Make (0) | 2017.10.26 |
Compile과 라이브러리 (0) | 2017.10.26 |
환경변수 (0) | 2017.10.26 |