C equivalente a autoflush (stdout nivelada depois de cada gravação)?

StackOverflow https://stackoverflow.com/questions/214271

  •  03-07-2019
  •  | 
  •  

Pergunta

Em Perl, eu posso digitar:

$|++;

e qualquer coisa impressa em STDOUT será fflush automaticamente () ed.

Existe um equivalente em C? Em outras palavras, existe alguma maneira eu posso dizer stdio para stdout automaticamente fflush após cada printf (), a forma como ele automaticamente libera stderr?

Foi útil?

Solução

setvbuf(stdout, NULL, _IONBF, 0) tentativa. Ele muda stdout para o modo sem buffer (_IONBF).

Outras dicas

Eu não fiz isso, mas _IOLBF seria a resposta certa.

$ man setvbuf
...
NOME
setvbuf - buffer atribuir a um fluxo

SINOPSE
#include

   int setvbuf(FILE *restrict stream, char *restrict buf, int type,
          size_t size);

DESCRIÇÃO
A função setvbuf () pode ser usado depois que o fluxo apontado por stream está associada com um arquivo aberto, mas antes de qualquer outra operação (que não seja uma chamada sem êxito para setvbuf ()) é realizada no corrente. O tipo de argumento determina como fluxo deve ser tamponado, como segue:

    * {_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.

Dê uma olhada setbuf () e setvbuf ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top