A leitura de stdin libera stdout?
O stdout possui buffer de linha quando conectado a um terminal, mas lembro de ler em algum lugar que a leitura (pelo menos a partir de stdin) automaticamente liberará o stdout. Todas as implementações de C que eu usei fizeram isso, mas não consigo encontrá-lo no padrão agora.
Faz sentido que funcione dessa maneira, caso contrário, código como este:
printf("Type some input: ");
fgets(line, sizeof line, stdin);
precisaria de um extrafflush(stdout);
Portanto, o stdout está garantido para ser liberado aqui?
EDITAR:
Como várias respostas disseram, parece não havergarantia no padrão em que a saída para stdout no meu exemplo aparecerá antes da leitura do stdin, mas, por outro lado, essa intenção é declarada no (meu rascunho gratuito) do padrão
A dinâmica de entrada e saída de dispositivos interativos deve ocorrer conforme especificado em 7.19.3. A intenção desses requisitos é que a saída sem buffer ou com buffer de linha apareça o mais rápido possível, para garantir que as mensagens de prompt realmente apareçam antes de um programa aguardar entrada.
(ISO / IEC 9899: Projeto do Comitê TC2 - 6 de maio de 2005, página 14).
Portanto, parece que não há garantia, mas provavelmente funcionará na maioria das implementações. (Últimas palavras famosas ...)