c語言每隔1秒向檔案中寫入一行記錄,類似日誌記錄
阿新 • • 發佈:2019-02-02
讀寫一個檔案test.txt,每隔1秒向檔案中寫入一行記錄,直到按Ctrl-C終止。下次啟動程式時在test.txt檔案末尾追加記錄,並且序號能夠接續上次的序號。
#include <stdio.h> #include <time.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main(void) { FILE *fp; fp = fopen("test.txt", "a+"); if (fp == NULL) { perror("Open test.txt error"); exit(1); } time_t t; struct tm *info; char *infostr; long num; char lastLine[512]; fseek(fp, 0, SEEK_SET); while(!feof(fp)) { memset(lastLine, 0x00, 512); fscanf(fp, "%[^\n]\n", lastLine); } printf("lastLine: %s\n", lastLine); num = atoi(lastLine) > 0 ? atoi(lastLine)+1 : 1; printf("last num: %ld\n", num); while(1) { t = time(NULL); info = localtime(&t); infostr = asctime(info); fprintf(fp,"%ld\t %d-%d-%d %d:%d:%d\n", num, 1900+info->tm_year, 1+info->tm_mon, info->tm_mday,info->tm_hour,info->tm_min,info->tm_sec); printf("[INFO]: %ld\t %d-%d-%d %d:%d:%d\n", num, 1990+info->tm_year, 1+info->tm_mon, info->tm_mday,info->tm_hour,info->tm_min,info->tm_sec); num++; fflush(fp); sleep(1); } fclose(fp); return 0; }