sleep () está parando meu programa muito cedo. O que estou fazendo de errado?
Pergunta
Eu quero escrever um pequeno programa que deve imprimir algo como
testar CPU ... Feito
testando RAM ... feito
e assim por diante.
Eu escrevi o seguinte programa em C:
printf( "testing RAM...\t\t" );
sleep( sleep_time );
printf( "done\n\n" );
printf( "testing HDD...\t\t" );
sleep( sleep_time );
printf( "done\n\n" );
onde sleep_time
é 2.
No entanto, em vez de imprimir "testar CPU ..." em primeiro lugar, em seguida, à espera, em seguida, imprimir o "feito", ele primeiro espera, em seguida, imprime a linha inteira, que não é exatamente o que eu tinha em mente.
Eu suponho que isso tem algo a ver com otimização automática pelo compilador.
Enfim, o que eu posso fazer para obter o resultado desejado?
Estou usando o Xcode 3.1 na OSX 10.5.6
Obrigado,
Bastian
Solução
O problema é que suas impressões são tamponados. imediatamente antes de dormir, fflush chamada (stdout); para liberar o buffer
Outras dicas
compilador pode impressões não Reordenar e dorme, pois eles são "comportamento observável externamente" da máquina abstrata C.
O que você recebe é devido ao buffer de saída padrão. Você pode usar fflush ou imprimir para stderr, que não é tamponada.
Apenas usando \ n ou um endl no final do primeiro printf deve ser suficiente