Cześć,
Program ma za zadanie monitorowania zmian wielkości pliku przez jakiś okres czasu, np przez 60min. Niestety, podczas kompilacji wyskakują mi różne błędy, chociażby taki:
C:\Users\\\\Untitled1.c||In function 'main':|
C:\Users\\\\Untitled1.c|44|warning: implicit declaration of function 'sleep' [-Wimplicit-function-declaration]|
C:\Users\\\\Untitled1.o:Untitled1.c|| undefined reference to `sleep'|
||error: ld returned 1 exit status|
Ogólnie prosiłbym o wszelkie porady, co poprawić, co dodać lub usunąć etc.
Kod programu poniżej. Dzięki!
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <fcntl.h>
const int czestotliwosc=1;
const int czas=60;
void Histogram(int dlugosc);
int main (int argc, char* argv[])
{
struct stat file_status;
time_t start, current;
int i;
char* nazwa_pliku;
if (argc>1)
nazwa_pliku = argv[1];
else
{
fprintf(stderr,"Podaj nazw'?''?' pliku jako argument wywolania\n");
return -1;
}
FILE *fp;
int fd;
fpos_t pos;
fd = dup(fileno(stdout));
freopen("ZAPIS", "w", stdout);
int pierwotny = -1;
time(&start);
do
{
time(¤t);
sleep(czestotliwosc);
if(stat(nazwa_pliku, &file_status) != 0){
perror("stat");
exit(1);
}
int aktualny = file_status.st_size;
if(pierwotny!=aktualny)
printf("%d ", aktualny);
pierwotny = file_status.st_size;
} while(difftime(current,start) < czas);
fflush(stdout);
dup2(fd, fileno(stdout));
close(fd);
clearerr(stdout);
fsetpos(stdout, &pos);
printf("Rysuje histogram. \nCzas monitorowania wynosi: %d s.\n",czas);
if((fp = fopen("OUT", "r"))==NULL)
{
fprintf(stderr,"Cannot open file.\n");
return -1;
}
while(!feof(fp))
{
fscanf(fp, "%d", &i);
if(!feof(fp))
{
printf("%d Bajtow \t", i);
Histogram(i);
}
}
fclose(fp);
return 0;
}
void Histogram(int dlugosc)
{
int j;
for(j=0; j<dlugosc; j++)
printf("_");
printf("\n");
}