Quais são as regras do buffer stdout de liberação automática em C?
Estou curioso para saber quais condições devem ser satisfeitas para liberar o buffer stdout automaticamente.
Antes de tudo, fiquei confuso que esse pseudo-código não imprime a saída a cada iteração:
while (1) {
printf("Any text");
sleep(1);
}
Mas se eu adicionar um caractere de nova linha, será.
Após algumas experiências, descobri que na minha máquina o buffer stdout é liberado:
Quando eu coloco em stdout 1025 caracteres ou mais;Quando eu leio stdin;Quando eu coloco o caractere de nova linha em stdout;A primeira condição é totalmente clara - quando o buffer estiver cheio, ele deverá ser lavado. O segundo também é razoável. Mas por que o caractere de nova linha causa descarga? Quais são as outras condições implícitas para isso?