문제

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 ()를 살펴보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top