printf 후 sleep을 하면 sleep하기 전에 출력될까?

jinwook han·2023년 3월 25일
0

printf 후 sleep을 하면 sleep하기 전에 출력될까?
-> sleep한 후에 출력된다.

코드

int main(int argc, char *argv[]) {
        printf("hello!");
        sleep(10);
}

결과

10초 후에 hello!가 출력되는 것을 확인할 수 있다.
그 이유는 출력이 버퍼에 있고, 출력되지 않았기 때문이다.

바로 출력하려면

fflush(stdout)을 추가하면 된다.

int main(int argc, char *argv[]) {


        printf("hello!");
        fflush(stdout);
        sleep(10);
}

더보기

stdout 스트림에서 줄 단위로 버퍼에 저장한다고 한다.
https://stackoverflow.com/questions/1716296/why-does-printf-not-flush-after-the-call-unless-a-newline-is-in-the-format-strin

0개의 댓글