Olá, sou novo neste fórum.
Eu estou com um problema em um programa em c++, no (L)Ubuntu.
Eu fiz uma barra de progresso em ASCII para terminal, e uso um loop para controlar o fim do carregamento. O problema é que eu preciso que esse loop tenha um delay de 0,5s, e para isso eu uso usleep de unistd.h. Esta função tem como parâmetro o tempo do delay em microssegundos. Porém no meu programa eu uso usleep(500000) (equivalente a 0,5s) e eu tenho um delay de 2s !
Eu já tentei user outras funções como sleep e nanosleep mas obtive o mesmo resultado.
Alguém de você poderia me ajudar?
main.cpp:
/* * File: main.cpp * Author: iromwalrider * * Created on 26 de Janeiro de 2015, 17:14 */#include <cstdlib>#include <stdio.h>#include <unistd.h>#include <time.h>using namespace std;/* * */static inline void loadBar(int x, int n, int r, int w){ // Only update r times. if ( x % (n/r ) != 0 ) return; // Calculuate the ratio of complete-to-incomplete. float ratio = x/(float)n; int c = ratio * w; // Show the percentage complete. printf("%3d%% [", (int)(ratio*100) ); // Show the load bar. for (int x=0; x<c; x++) printf("="); for (int x=c; x<w; x++) printf(" "); // ANSI Control codes to go back to the // previous line and clear it. printf("]\n\033[F\033[J");}int main(int argc, char** argv) { for (int i=0;i<=150;i++) { usleep(500000); loadBar(i,150,9,10); } return 0;}