표준 입출력과 버퍼
소윤
2023.04.01
질문 제목 : 표준 입출력과 버퍼표준 입출력과 버퍼질문 내용 :
fgets 함수를 호출하면 문자열을 입력 받으려고 커맨드에서 깜빡거리고 있잖아요.
그럼 문자열을 입력하겠지요.
문자열을 입력하고 엔터를 치기 전까지는 버퍼에 들어가지 않은 상태인건가요?
그렇다면 이 키 입력에 대한 정보들은 어디에 쌓여있다가 엔터를 쳤을 때 버퍼로 이동되는 것이지요?
궁금합니다.
-
보아라
저도 일단 키보드 입력할 때 버퍼에 차곡차곡 쌓였다가 함수가 한 번에 회수해가는 줄 알았거든요.
그런데 C언어 교재 복습하다보니 버퍼로 들어가는 시점이 엔터를 치고 나서야 들어간다고 나와있어서요.
아무래도 도서관에 가서 이런저런 문서를 참조해봐야할지 싶네요 .. -
라이브라
엔터와 같은걸 안쳐도 모든 입력은 입력버퍼에 들어갑니다. 단지 개행문자와 같은 몇몇 특수한 문자를 해당 입력의 끝으로 판단하여 입출력처리를 할뿐입니다.
하기에 따라서 개행 그런거 상관 안하고 모든 입력을 각각의 단위로 처리하기도 합니다.
단지 대부분의 운영체제와 쉘이 효율적인 입출력을 위해 개행문자 단위로 출력을 한다던가 할 뿐이고, c의 표준입출력이 그런 버퍼를 사용하는 시스템을 지원하고 있을 뿐입니다.
시스템콜 쓰실줄 아시면 nonbuffered