Witam!
Poniższy program kopiuje plik do innego pliku docelowego, oraz mierzy czas trwania tej operacji w setnych częściach sekundy.
(nazwy plików podajemy jako argumenty <źródło> ).
Docelowo ma mierzyć ten czas w milisekundach.
Kombinowałem z gettimeofday(), tylko nie wiem przez co potem dzielić:
duration = (double)(finish-start) / CLOCKS_PER_SEC;
ponieważ to rozwiązanie nic nie daje. Po zastosowaniu zamiast clock() - gettimeofday(), czas nie jest w ogóle liczony. Jeśli ktoś miałby jakiś pomysł, to będę bardzo wdzięczny! Pozdrawiam. kompilator - gcc system - Ubuntu Linux 7.10
# include
# include
# include
# define MAX 512
int main(int argc, char* argv[]){
char buf[MAX];
int desc_zrod, desc_cel;
int lbajt;
// Poczatek pomiaru czasu
clock_t start, finish;
double duration;
start = clock();
// ----------------------
if (argc<3)
{
fprintf(stderr, "Za malo argumentow. Uzyj:\n");
fprintf(stderr, "%s \n", argv[0]);
exit(1);
}
desc_zrod = open(argv[1], O_RDONLY);
if (desc_zrod == -1)
{
perror("Blad otwarcia pliku zrodlowego");
exit(1);
}
desc_cel = creat(argv[2], 0640);
if (desc_cel == -1
{
perror("Blad utworzenia pliku docelowego");
exit(1);
}
while((lbajt = read(desc_zrod, buf, MAX)) > 0)
{
if (write(desc_cel, buf, lbajt) == -1)
{
perror("Blad zapisu pliku docelowego");
exit(1);
}
}
if (lbajt == -1){
perror("Blad odczytu pliku zrodlowego");
exit(1);
}
if (close(desc_zrod) == -1 || close(desc_cel) == -1)
{
perror("Blad zamkniecia pliku");
exit(1);
}
// Koniec pomiaru czasu
finish = clock();
duration = (double)(finish-start) / CLOCKS_PER_SEC;
printf("\n Czas wykonania programu %2.5f setnych_sekundy\n", duration);
// ----------------------
exit(0);
}