1. 程式人生 > >c語言每隔1秒向檔案中寫入一行記錄,類似日誌記錄

c語言每隔1秒向檔案中寫入一行記錄,類似日誌記錄

讀寫一個檔案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;
}