raciocinar sobre o comportamento do programa pode ser complicado às vezes. printf
frequentemente é muito útil obter algum tipo de vestígio do que acontece.
O que eu não sabia há muito tempo é que o stdout
stream está armazenado em buffer!
Isso significa que seu programa pode terminar antes que toda a saída seja impressa.
Uma solução alternativa que ouvi de John Hinke (da ESRLabs ): use fprintf
e configure-o com stderr
.
fprintf(stderr, "fuck yeah!");
Acabei desativando o buffer de stdout
:
setbuf(stdout, 0);
dos documentos:
Especifica o buffer a ser usado pelo fluxo para operações de E / S, que se torna um fluxo totalmente armazenado em buffer. Ou, alternativamente, se buffer for um ponteiro nulo, o armazenamento em buffer é desabilitado para o fluxo, que se torna um fluxo sem buffer.