고급 개발자로 가는 길

C

[C언어] 비버퍼링 버퍼링 파일 함수 open, fopen 등

다크엔지니어 2021. 3. 29. 21:12
반응형

비버퍼링 함수인 open과 버퍼링 함수인 fopen 에 대해 설명 해 볼 것이다.

먼저 open 함수는 함수 호출에 의해 커널 내의 시스템 호출이 바로 실행되는 것이다.

 

 

비버퍼링 함수는 파일 디스크립터에 의해 작동 된다.

 

파일 디스크립터란 프로세스가 파일들을 접근할때 커널이 식별하기 위한 값이라고 볼수있다.

즉 파일을 열면 파일 디스크립터를 반환하게 된다.

파일 디스크립터는 음수가 아닌 정수로 반환이 된다.

파일 디스크립터 0 = 표준 입력 standard input, 1 = 표준 출력 standard output, 2 = 표준 오류 standard error

바로 이 파일디스크립터를 사용하여 리눅스에서 리다이렉션 등에 사용한다.

 

비버퍼링 함수 

  • open(), creat(), read(), write(), lseek(), close()

 

 

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

int fd_powerfail = open(POWER_FAIL_FILE, O_RDONLY);
if(fd_powerfail < 0)
{         	
	perror("open failed the power fail.\n");
    exit(-1);
}

 

버퍼링 함수는 C라이브러리 표준입출력 방식이다. 표준입출력은 버퍼 입출력 방식이다.

그래서 이 함수들은 파일 디스크립터를 반환하지 않고 파일포인터를 반환한다.

 

버퍼링 함수

  • fopen(), fclose(), fread(), fwrite(), fseek()
#include <stdio.h>

FILE *fd_srv_io;
fd_srv_io = fopen ( SRV_IO_FILE, "r");
	
if(fd_srv_io < 0)
{         	
	perror("open failed srv io\n");
    exit(-1);
}
	

 

반응형