저수준 파일 입출력, 저수준 입출력 함수

(2018-06-28)

저수준 파일 I/O, open(), read(), write(), close()

1. [UNIX/Linux]  저수준 파일 입출력 함수

  ※ 대부분의 파일 입출력을 open,read,write,lseek,close 등 5개 함수만으로 수행 가능

  ㅇ int open(const char *path, int oflag, [mode_t mode]);
     - 헤더 파일 : 'sys/types', 'sys/stat.h', 'fcntl.h'
     - 의미
        . 지정 경로(path)에 파일 생성 또는 기존 파일을 오픈하고,
          파일 접근을 위한 파일기술자를 반환 함
           .. 즉, 성공시 파일기술자(번호) 반환, 실패시 -1 반환

     - oflag 플래그 : 읽기 쓰기에 대한 목적 등 세팅
        . O_RDONLY : 읽기 전용으로 파일 오픈
        . O_WRONLY : 쓰기 전용으로 파일 오픈
        . O_RDWR   : 읽기 쓰기 겸용으로 파일 오픈
        . O_APPEND : 기존 파일 맨뒤에 덧붙임
        . O_TRUNC  : 기존 파일 내용 삭제 (파일 크기를 0 으로 만듬)

        . O_CREAT  : 필요하면 파일 생성
        . O_EXCL   : 파일 생성하나, 이미 존재하는 파일이면 에러 발생시킴

        . O_NONBLOCK : 다른 프로세스가 접근중이라도, 읽기 모드를 허용
        . O_SYNC   : 물리적으로 쓰기 완료 전까지는 파일 쓰는 것을 금지함

        . 위 플래그들을 비트 OR 연산자로 묶어 표현 가능
     - mode 플래그 : 파일 권한 정보

  ㅇ ssize_t read(int fd, void *buf, size_t nbytes);
     - 헤더 파일 : 'sys/types', 'unistd.h'
     - 성공적으로 열려진 파일 또는 소켓에 대해 파일기술자를 통해 파일에 접근하여,
       규정한 바이트 단위 만큼 데이터들을 읽음
        . 성공시 수신된 바이트 수 (단, 파일끝을 만나면 0) 반환, 실패시 -1 반환
     - 인자
        . fd     : 열려진 파일 또는 소켓에 대한 파일기술자(번호)
        . buf    : 파일 또는 소켓에서 읽은 데이터를 저장할 버퍼의 포인터(주소값)
        . nbytes : 파일 또는 소켓에서 읽을 데이터의 바이트 단위 길이

  ㅇ ssize_t write(int fd, const void *buf, size_t nbytes);
     - 헤더 파일 : 'sys/types', 'unistd.h'
     - 인자 : 위 read 함수와 유사
        . fd     : 열려진 파일 또는 소켓에 대한 파일기술자(번호)
        . buf    : 전송할 데이터가 저장된 버퍼의 포인터(주소값)
        . nbytes : 전송할 데이터의 바이트 단위 길이

  ㅇ int close(int fd);
     - 헤더 파일 : 'unistd.h'
     - 의미 : 열려진 파일기술자 또는 소켓을 닫음
        . 성공시 0 반환, 실패시 -1 반환


[파일] 1. 파일 2. 파일 I/O 3. 저수준 파일 I/O 4. 화일 기술자 5. 화일 포인터 6. 화일 끝(EOF)

 
        최근수정     요약목록(시험중)     참고문헌