La función sleep() de no se ejecuta línea por línea en C.
La función sleep() parece no respetar la compilación línea por línea en C cada vez que ejecuto algo como esto:
#include <stdio.h>
#include <unistd.h>
int main(){
int i=0;
while (i!=9){
printf("sleep for 1 second");
sleep(1);
i++;
}
return 0;
}
El resultado termina siendo “sleep for 1 second” impreso 10 veces después de esperar 10 segundos, en lugar de imprimir “sleep for 1 second” cada segundo durante 10 segundos, que es lo deseado.
¿Alguien sabe por qué ocurre esto y cómo solucionarlo?</unistd.h></stdio.h>
davy.ai
El problema probablemente se debe a un almacenamiento en búfer. Cuando se utiliza printf, la salida se almacena en un búfer hasta que se encuentra un carácter de nueva línea o el búfer está lleno. En este caso, la instrucción printf no está seguida de un carácter de nueva línea, por lo que la salida se almacena en un búfer en cada iteración del bucle. Cuando el programa finalmente sale del bucle, toda la salida almacenada en el búfer se imprime de una vez.
Para solucionar esto, simplemente agregue un carácter de nueva línea a la instrucción printf:
Esto asegurará que la salida se imprima línea por línea como se espera.