作者:淡逸幽悠 | 来源:互联网 | 2024-12-21 21:39
为了在Linux系统中实现每秒向文件中写入当前时间的功能,我们可以使用C语言编写一个简单的程序。以下代码展示了如何完成这一任务,并且包含了必要的错误处理和文件指针定位。
#include
#include
#include
#include
#define TRUE 1
#define FORMAT "%d, %04d-%02d-%02d %02d:%02d:%02d\n"
#define REC_LEN 27 // 根据FORMAT定义的记录长度
int main(void) {
FILE *fp;
struct tm *now;
time_t sec;
int index = 1;
char temp[REC_LEN];
// 打开或创建文件
if ((fp = fopen("test.txt", "a+")) == NULL) {
perror("打开文件 test.txt 失败:");
exit(EXIT_FAILURE);
}
// 尝试读取最后一行以获取索引值
if (!fseek(fp, -REC_LEN, SEEK_END)) {
fgets(temp, sizeof(temp), fp);
printf("最后一条记录: %s", temp);
index = (int)strtol(temp, NULL, 10) + 1;
}
fseek(fp, 0, SEEK_END); // 移动到文件末尾
while (TRUE) {
time(&sec);
now = localtime(&sec);
fprintf(fp, FORMAT, index++, now->tm_year + 1900, now->tm_mon + 1, now->tm_mday, now->tm_hour, now->tm_min, now->tm_sec);
fflush(fp); // 立即刷新缓冲区
sleep(1); // 每隔一秒执行一次
}
fclose(fp);
return 0;
}
该程序首先尝试打开或创建一个名为test.txt
的文件。如果文件已存在,则会读取最后一行来确定下一个要写入的时间戳编号。接着,它进入无限循环,在每次迭代时获取当前时间并将其格式化后写入文件,之后休眠一秒钟再继续下一轮。请注意,实际应用中应考虑如何优雅地终止这个循环,例如通过捕获信号或设置特定条件。