알게 된 것
[알게 된 것] - Linux/printf 및 표준 출력 함수 버퍼링
빗방울소리
2022. 3. 8. 18:14
- 문제점
리눅스에서 예제 코드를 가지고 이것저것 만지작 거리면서
간단하게 디버깅이 하고 싶어서 printf 함수를 사용하고 있었다.
근데 내가 의도한 대로 제때제때에 출력이 안되고 엉뚱한 시점에
모아서 한번에 출력이 되고 있었다.
출력해야 할 것들이 빠지지 않고 출력은 되는 것으로 보아 버퍼쪽 문제 인것 같아서 구글링을 좀 해봤다.
- 결론
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tipsware&logNo=221055590809
[Q&A] 리눅스(Linux)에서 표준 출력
: C 언어 관련 전체 목차 http://blog.naver.com/tipsware/221010831969 [ 질문 ] 리눅스 운영체제에서 아...
blog.naver.com
이런 글을 찾을 수 있었다. 결론적으로 윈도우와 리눅스의 차이였다. 리눅스는 \n 나 fflush를 통해
출력 버퍼를 비우지 않으면 출력을 보류한다니... 이걸로 또 한시간은 헤멨다.
왜 이런가 해서 좀더 찾아봤는데, 리눅스에서는 윈도우와 달리 멀티 프로세스 프로그래밍이 가능해서
프로세스들이 서로 값을 출력하려고 하면 출력된 값들이 서로 뒤섞여서 알아보기 어려울 수 있으므로
이런식으로 조건을 걸어둔 거라고 한다.