본문 바로가기

[+] Information/[-] Network

[2009/5/24] 파일의 조작

1. 저 수준 파일 입출력(Low-Level File Access)

 

 - 리눅스 혹은 윈도우즈 자체에서 제공해 주는 파일 입출력 함수를 사용하여 파일을 관리(파일의 생성 및 삭제, 데이터 입력 및 출력)하는 것을 의미함.

 - 리눅스에서는 모든 것을 파일로 관리함.
   1) 파일, 소켓, 표준 입력, 표준 출력
 * 주의 : 표준 입출력 함수.


 - 파일에 파일 디스크립터를 할당해서 관리(파일 디스크립터는 정수)


2. 파일 디스크립터(File Descripter) - 리눅스.

 
- 파일을 관리하기 위해서 모든 파일(파일, 소켓 표준 입력, 표준 출력)에 파일 디스크립터를 할당 해 준다.

 

 파일 디스크립터  대상
 0  표준 입력
 1  표준 출력
 2  표준 에러 출력

 * Windows에서는 File Handle 이라 함.


3. File open 및 Close


#include <fcntl.h>
#include <sys/type.h>
#include <sys/stat.h>


int open(const char *path, int flag);

 
* return 타입이 int인 이유는 파일 디스크립터를 return 해주기 때문.


#include <unistd.h>


int close(int fildes);

 
* int fildes = 파일 디스크립터 value


 MODE  의                                         미
 O_CREAT   필요한 경우 파일을 생성
 O_TRUNC   존재하던 데이터를 모두 삭제
 O_RDONLY   읽기 전용 모드로 파일을 오픈

 
* 위의 표들은 int flag에 들어감.


4. Data read & Write


#include <unistd.h>


ssize_t write(int fildes, const void *buf, size_t nbytes);

 
 * const void *buf = 파일의 정보를 담고 있는 배열에 대한 정보

 
 *size_t nbytes = 전달하고자 원하는 데이터의 크기

#include <unistd.h>


sszie_t read(int fildes, void *buf, size_t nbytes);


 * void *buf = 데이터 저장소


 * size_t nbytes = 읽어들일 최대 데이터의 크기.