ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C/C++ fflush(3)
    C,C++ & Linux 2020. 5. 21. 10:32
    728x90

    함수 기능

    아직 파일에 쓰이지 않은 버퍼의 내용을 커널에 전달하는 함수

     

    fflush() 를 호출해도 버퍼의 내용을 커널에 전달할 뿐 파일을 닫는 것은 아닙니다.

    함수 원형

    #include <stdio.h>
    
    int fflush(FILE *fp);

    매개변수

    fp

    버퍼를 비울 파일 포인터

    반환값

    성공 시 0 리턴

    에러 시 EOF 리턴하고 errno 설정

    예제

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[]) {
        char buf[BUFSIZ];
    
        // stdout 같은 터미널은 Line buffer 로 지정됨
        setbuf(stdout, buf);
    
        // \n 을 만나지 않았지만 fflush 로 인해 바로 출력
        printf("Hello, ");
        fflush(stdout);
        sleep(1);
    
        printf("OSLAB!!");
        fflush(stdout);
        sleep(1);
    
        // Hello, OSLAB!!\n 한 번에 출력
        printf("\n");
        sleep(1);
    
        // None buffer 로 변경
        // 여기서부터는 매 라인마다 바로바로 출력됨
        setbuf(stdout, NULL);
    
        // How 출력
        printf("How");
        sleep(1);
    
        // are 출력
        printf(" are");
        sleep(1);
    
        // you? 출력
        printf(" you?");
        sleep(1);
    
        // \n 출력
        printf("\n");
        exit(0);
    }
    

     

    결과

     

     

     

     

     

     

     

     

     

     

    리눅스시스템프로그래밍 저자 : 홍지만
    https://book.naver.com/bookdb/book_detail.nhn?bid=14623672

    책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)

    'C,C++ & Linux' 카테고리의 다른 글

    C/C++ ferror(3) feof(3) clearerr(3)  (0) 2020.05.21
    C/C++ getc(3) fgetc(3) getchar(3)  (0) 2020.05.21
    C/C++ setbuf(3) setvbuf(3)  (0) 2020.05.21
    C/C++ fclose(3) fcloseall(3)  (0) 2020.05.21
    C/C++ fopen(3) freopen(3) fdopen(3)  (0) 2020.05.21

    댓글

Designed by Tistory.