표준입출력
-
표준입출력과 버퍼링IT/Linux C 2012. 4. 18.
시스템은 기본입출력인 stdin,stdout, stderr가 있다. stdin과 stdout은 해당 내용이 즉시 반영되지 않고 버퍼(linux에서는 4k)에 저장되었다가, 조건에 의해서 read 혹은 write한다. 얼마전에 stdout buffer 때문에 프로그램이 의도치 않게 행동하여 애를 먹은적이 있다. FILE *fp = fopen("test.log","w"); for( int i=0; i < 10; i++) { fprintf(fp,"1"); sleep(1); } fclose(fp); 코드의 의도는 test.log라는 file에 "1"을 1초씩 쉬면서 10번 쓰는겁니다. 하지만 write의 내용은 버퍼링 되기 때문에, 바로 적히지 않고 10초 뒤에 한번에 10번 쓰여진다. 파일이 닫힐 때 버퍼를 ..