문제
Perl에서는 다음을 입력 할 수 있습니다.
$|++;
그리고 stdout에 인쇄 된 것은 자동으로 fflush () ed입니다.
C에 동등한 것이 있습니까? 다시 말해, 모든 printf () 후에 STDERR을 자동으로 플러시하는 방식을 STDIO에게 자동으로 fflush stdout으로 알릴 수있는 방법이 있습니까?
해결책
노력하다 setvbuf(stdout, NULL, _IONBF, 0)
. 변경됩니다 stdout
부패하지 않은 경우 (_IONBF
) 모드.
다른 팁
나는 이것을하지 않았지만 _iolbf가 정답이 될 것입니다.
$ man setvbuf
...
이름
SETVBUF- 스트림에 버퍼링을 할당합니다
개요
#포함u003Cstdio.h>
int setvbuf(FILE *restrict stream, char *restrict buf, int type,
size_t size);
설명
setvbuf () 함수는 스트림이 스트림에 가리키는 스트림이 열린 파일과 연관된 후에 사용될 수 있지만 다른 작업 (setvbuf)에 대한 실패한 호출 이외의 다른 작업 전에 스트림에서 수행 될 수 있습니다. 인수 유형은 다음과 같이 스트림을 버퍼링하는 방법을 결정합니다.
* {_IOFBF} shall cause input/output to be fully buffered.
* {_IOLBF} shall cause input/output to be line buffered.
* {_IONBF} shall cause input/output to be unbuffered.
setbuf () 및 setvbuf ()를 살펴보십시오.
제휴하지 않습니다 StackOverflow