저수준 파일 열기/닫기 함수

Juni and ING·2020년 8월 20일
0

파일 열기

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

int open(const char * file, int flags);
int open(const char * file, int flags, int mode);

인자

file : 작업을 할 대상 파일

flags : 파일을 열 때 취할 옵션

  • O_RDONLY
    [필수] Read only용으로 Open
  • O_WRONLY
    [필수] Write only용으로 Open
  • O_RDWR
    [필수] Read&Write 용으로 Open
  • O_CREAT
    대상 파일이 존재하지 않을 시, 파일 생성
  • O_NOFOLLOW
    대상 파일이 Symbolic link 파일일 때, Open하지 않음
  • O_TRUNC
    대상 파일이 존재할 시, 덮어씀
  • O_APPEND
    파일을 열 때, 파일 오프셋을 파일 가장 마지막에 위치시킴

mode: 파일의 권한 설정

  • 0644 이런 식으로 지정할 수 있음
  • 아니면 Pre-defined 문자열로 지정할 수도 있음. 리스트는 다음과 같음
    • S_IRWXU : 0700
    • S_IRUSR : 0400
    • S_IWUSR : 0200
    • S_IXUSR : 0100
    • S_IRWXG : 0070
    • S_IRGRP : 0040
    • S_IWGRP : 0020
    • S_IXGRP : 0010
    • S_IRWXO : 0007
    • S_IROTH : 0004
    • S_IWOTH : 0002
    • S_IXOTH : 0001

반환값

성공 시 : File descriptor값
실패 시 : -1


파일 닫기

#include <unistd.h>

int close(int fd);

인자

fd : File descriptor

반환값

성공 시 : 0
실패 시 : -1


Offset 설정

#include <sys/types.h>
#include <unistd.h>

off_t lseek(int fd, off_t offset, int whence);

인자

fd : File descriptor
offset : Offset 값(양음수 가능)
whence : Offset의 기준

  • SEEK_SET
    파일의 처음
  • SEEK_END
    파일의 끝
  • SEEK_CUR
    파일의 현재 커서 위치

반환값

성공 시 : 파일의 처음부터 이동한 커서 위치까지의 Byte수
실패 시 : -1


파일 디스크립터 - 포인터 변환 함수

fdopen

#include <stdio.h>

FILE *fdopen(int fd, const char *mode);

인자

fd : File descriptor
mode : fopen()의 mode와 동일(Ex: "r", "w+", ...)

반환값

성공 시 : File pointer
실패 시 : NULL

주의점


파일포인터를 다 사용한 후, 반드시 fclose()로 해제해야 함.

fileno

#include <stdio.h>

int fileno(FILE *fp);

인자

fp : File pointer

반환값

성공 시 : File descriptor
실패 시 : -1

주의점


fdopen()함수와는 다르게 디스크립터를 해제하지 않아도 됨.

profile
인기는 없지만 그래도 임베디드를 사랑하는 한 개발자

0개의 댓글