반응형

2017/07 13

표준 입출력 - freopen, fdopen

표준 입출력 라이브러리에서는 fopen 외에도 freopen, fdopen 함수를 통해 파일 스트림을 열 수 있어요. 이 두 함수는 이미 열려진 파일을 재지정할 때 사용합니다. freopen은 열려진 파일 스트림을 입력 인자로 전달하고 fdopen은 파일 디스크립터를 전달합니다.#include FILE *freopen(const char *pathname, const char *mode, FILE *fp);FILE *fdopen(int fd, const char *mode);반환 값: 실패 시 NULL 다음은 main 함수 인자로 파일 명을 전달하면 표준 출력을 해당 파일명으로 재지정합니다. 이 후 printf 함수를 호출하면 콘솔 화면에 출력하지 않고 재지정한 파일에 출력하는 것을 확인할 수 있습니다...

표준 입출력 - fopen, fclose

표준 입출력 라이브러리에서는 작업할 파일을 열 때 fopen 함수를 사용합니다. 정상적으로 파일을 열면 작업할 파일 스트림 정보를 기억하는 FILE 구조체 포인터를 반환하며 실패하면 NULL을 반환합니다. 이 후에 모든 표준 입출력 라이브러리를 사용할 때 fopen 함수에서 반환한 파일 스트림을 인자로 사용합니다. 모든 작업을 완료하여 더 이상 파일 스트림을 사용하지 않는다면 fclose 함수를 호출하여 파일 스트림을 닫습니다. #include FILE *fopen(const char *pathname, const char *mode);반환 값: 실패 시 NULLmode: “r” 읽기 모드 “w” 쓰기 모드 “a” 추가 모드 “t” 텍스트 파일 모드 “b” 바이너리 파일 모드 “+” 읽기/쓰기 모두 가능..

RAW 입출력과 표준 입출력의 성능 비교

앞에서 표준 입출력에서는 버퍼링 정책(FULL BUFFERING, LINE BUFFERING, NULL BUFFERING)을 사용한다는 것을 알아보았어요. 이번에는 간단하게 open, write, close 시스템 호출을 이용한 RAW 입출력과 표준 입출력의 성능을 비교해 보기로 할게요. 다음은 1바이트씩 10000번 파일에 기록하는 것을 RAW 입출력과 표준 입출력을 사용하는 것을 비교하는 소스 코드입니다. 표준 입출력을 사용하는 것은 0부터 8000까지 500씩 늘려가면서 버퍼를 설정하고 있어요.

표준 입출력 - FILE 구조체

표준 입출력 함수에서는 작업할 파일에 관한 정보를 FILE 구조체 형식으로 기억합니다. FILE 구조체는 C 컴파일러에 따라 조금씩 차이가 있지만 파일 기술자, 버퍼 시작 주소, 버퍼에서 입출력할 위치 주소, 작업 관련 플래그 등을 제공합니다. struct _IO_FILE{ int _fileno; //파일 기술자 char *_IO_read_ptr; //읽기 버퍼에서 현재 읽을 위치 주소 char *_IO_read_base; //읽기 버퍼의 시작 주소 char *_IO_read_end; //읽기 버퍼에 처리할 데이터가 있는 영역의 끝 주소 char *_IO_write_ptr; //쓰기 버퍼에서 현재 기록할 위치 주소 char *_IO_ write _base; //쓰기 버퍼의 시작 주소 int _flags;..

표준 입출력 - 버퍼 및 버퍼링 정책 설정

C언어 표준 라이브러리에서 제공하는 입출력 함수들은 평균적으로 성능이 높게 입출력할 수 있게 고안하여 입출력 시스템 호출에 관해 깊은 지식과 경험이 없는 이들도 충분히 높은 성능을 갖게 프로그래밍할 수 있습니다. 물론 C언어 표준 입출력 라이브러리에서는 개발자가 버퍼링 정책을 변경하거나 버퍼를 설정하는 몇 가지 함수를 제공하고 있습니다. /*********************************************************************** * ex_change_buffering.c * * example source – print string(print character and sleep) * ************************************************..

1인당 GDP 2만9000불, 우리의 평균 수입은?

1인당 GDP 2만9000불, 우리의 평균은? 안녕하세요. 언제나 휴일, 언휴예요. 2017년 발표에 따르면 우리나라의 1인당 GDP는 2만 9천불입니다. 4인 가족 기준으로 볼 때 대략 1억 2천만원 정도로 볼 수 있습니다. 하지만 여기에서 빼야 할 부분이 있어요. 실제 가계로 들어오는 부분을 계산하려면 노동소득 분배율을 적용해야죠.발표에 따르면 노동소득 분배율이 대략 70%정도라고 하네요. 노동소득 분배율을 적용하면 8천 4백만원이네요. 하지만 이 값은 평균값이지 중간값은 아닙니다. 중간값은 이보다 상당히 낮을 것이며 6천만원 수준으로 예상합니다. 2017년 통계청 자료를 보면 도시근로자의 4인 가족의 년간 수입 평균은 약 6천 8백 50만원이라고 하네요.그리고 4인 가족의 년간 수입 중간값은 약 5..

파일입출력 - 버퍼링

리눅스에서는 파일 입출력을 할 때 물리적인 파일에 조회 및 기록의 횟수를 최소화하여 성능을 높이기 위해 버퍼링 정책을 사용하고 있습니다. 만약 write 호출로 데이터를 쓰기 명령을 전달하면 해당 파일 작업을 위한 버퍼에 기록을 해 두었다가 정책에 따라 특정 시점에 물리적인 파일에 기록을 수행합니다. 리눅스에서 제공하는 버퍼링 정책에는 버퍼가 꽉 차면 물리적인 파일에 기록하는 FULL BUFFERING과 꽉 차거나 개행문자가 오면 처리하는 LINE BUFFERING, 버퍼를 사용하지 않는 NULL BUFFERING 정책을 제공하고 있습니 디폴트 버퍼링 정책은 FULL BUFFERING이며 char 장치 파일에 관한 작업은 LINE BUFFERING 정책을 사용합니다. 그리고 오류를 출력하는 stderr ..

표준 입출력 라이브러리

파일 입출력에 관한 system 호출(open, close, write, ...)을 사용하여 응용 프로그램을 제작하는 비용을 줄일 수 있게 ANSI C 표준기구에서는 표준 입출력 라이브러리를 제공합니다. 표준 입출력 라이브러리는 C언어 창시자인 데니스리치에 의해 1975년에 만들어졌으며 지금도 거의 개발 초기 모습을 유지하고 있습니다. 표준 입출력 라이브러리는 개발자 편의성과 효율성이 높은 파일 입출력을 제공하기 위해 만들었습니다. 시스템 호출을 이용하여 파일 입출력 작업을 하면 시스템 호출할 때마다 커널을 통해 입출력을 수행하여 시스템 효율이 떨어질 수 있습니다. 표준 입출력 라이브러리를 이용하여 파일 입출력 작업을 하면 파일 스트림 버퍼를 이용하여 시스템 호출 횟수를 줄여줍니다. 예를 들어 write..

파일 삭제, unlink, remove, rmdir 함수

리눅스 시스템에서는 파일을 삭제하는 시스템 호출로 unlink, remove, rmdir 함수를 제공하고 있어요. unlink는 연결 계수를 1 감소하는 시스템 호출이고 rmdir은 비어있는 디렉토리를 지울 때 사용하는 시스템 호출입니다. remove는 표준 입출력 라이브러리 함수로 입력 인자로 전달하는 이름이 파일일 때는 unlink와 같고 디렉토리일 때는 rmdir과 같습니다. /********************************************************************** * ex_unlink.c * * exmple source – test unlink * ***************************************************************..

실종한 철학을 찾습니다.

실종한 철학을 찾습니다. 안녕하세요. 언제나 휴일, 언휴예요. 박사 학위를 보면 전공에 관계없이 Philosophiæ 라고 쓰여져 있어요. 철학박사라고 쓰여 있는 것이죠. 이는 모든 분야의 기초 학문으로 철학을 배우기 때문에 부여진 것이예요. 그런데 우리는 철학을 배우나요? 우리나라에서는 언제부터인가 철학을 찾아보기 힘들어졌어요. 소크라테스가 말했듯이 철학은 "지혜를 향한 사랑"이며 본질을 파악하고자 하는 논리적 학문이죠. 그리고 철학은 지도계층이 따라야 할 도덕적 윤리를 포함하고 있어요. 그런데 우리 나라에서는 지도 계층이 따라야 할 도덕적 윤리는 사라지고 국민윤리가 생긴 것이죠. 지금은 이름이 바뀌었지만요. 우리는 주변에 누군가가 술집을 운영한다고 비난하지 않아요. 하지만 국무총리 후보가 술집을 여러..

반응형