向一个log文件打印行号和date在项目中经常用到,所以本篇博客将程序贴在此处,以后如果在项目中应用到,可以直接拿来应用。
例程:进程向log文件每隔1秒写入一行序号和date,如果进程中断,下次再启动该进程时,能够接续上次的序号。
程序如下:
/*************************************************************************
@Author: wanghao
@Created Time : Wed 16 May 2018 04:10:25 AMPDT
@File Name: test3.c
@Description:
************************************************************************/
#include<stdio.h>
#include<time.h>
#include<errno.h>
#include<string.h>
#include<unistd.h>
#define N 128
int main(int argc,char **argv)
{
FILE *fp;
int line=0;
char buf[N];
if((fp= fopen("/home/wanghao/log","a+")) == NULL) {
fprintf(stderr,"fopen failed:%s\n", strerror(errno));
return-1;
}
while(fgets(buf, N, fp)!= NULL) {
line++;
}
while(1)
{
time_t t;
/*Getthe time as the number of seconds since the Epoch,
1970-01-01 00:00:00 +0000 (UTC).*/
time(&t);
struct tm *t1;
/*Getthe current local time*/
t1=localtime(&t);
if(sprintf(buf, "%-2d %d/%d/%d %d:%d:%d\n",
++line,
t1->tm_year+1900,
t1->tm_mon+1,
t1->tm_mday,
t1->tm_hour,
t1->tm_min,
t1->tm_sec)< 0)
{
perror("fprintferror");
break;
}
printf("%s",buf);
fputs(buf,fp);
fflush(fp);
sleep(1);
}
fclose(fp);
return0;
}