목록unix (48)
K 개발자
파일 정보 검색 파일명으로 파일 정보 검색 : 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..
유닉스 기본 명령 로그인/로그아웃 관련 명령 명령 기능 주요 옵션 사용 예 telnet 유닉스 시스템에 접속 - telnet a.co.kr logout 유닉스 시스템에서 접속 해제 - logout exit - exit 파일/디렉토리 조작 명령 명령 기능 주요 옵션 사용 예 pwd 현재 디렉토리 경로 출력 - pwd ls 디렉토리 내용 출력 -a : 숨김 파일 출력 -l : 파일 상세 정보 출력 ls -a /tmp ls -l cd 현재 디렉토리 변경 - cd /tmp cd ~a01 cp 파일/디렉토리 복사 -r : 디렉토리 복사 cp a.txt b.txt cp -r dir1 dir2 mv 파일/디렉토리 이름 변경과 이동 - mv a.txt b.txt mv a.txt dir1 mv dir1 dir2 rm 파..
시스템 호출과 라이브러리 함수 유닉스 시스템은 파일 시스템 접근이나 사용자 정보, 시스템 정보, 시스템 시간 정보, 네트워킹 등 다양한 서비스를 제공한다. 유닉스 시스템이 제공하는 이러한 서비스를 이용해 프로그램을 구현할 수 있도록 제공되는 프로그래밍 인터페이스를 시스템 호출이라고 한다. 다시 말해, 시스템 호출을 사용하면 유닉스 시스템의 서비스를 직접 이용하는 프로그램을 작성할 수 있다. 라이브러리library는 미리 컴파일된 함수들을 묶어서 제공하는 특수한 형태의 파일이다. 시스템 호출과 라이브러리 함수의 비교 응용 프로그램은 라이브러리 함수나 시스템 호출을 이용해 작성할 수 있다. 시스템 호출은 커널의 해당 모듈을 직접 호출해 작업하고 결과를 리턴한다. 커널, 즉 시스템을 직접 호출하기 때문에 시스..