Linux中,C语言,使用文件IO,open和close函数实现“每隔1秒向文件1.txt写入当前系统时间,行号递增
时间: 2024-10-29 12:13:27 浏览: 17
在Linux中,使用C语言操作文件IO,尤其是`open()`、`close()`以及`fprintf()`等函数,可以编写一个程序来定期向文件写入当前系统时间和行号。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define FILE_NAME "1.txt"
#define INTERVAL_SECONDS 1
// 写入文件的函数
void write_to_file(int file descriptor) {
char line[50];
time_t current_time;
struct tm* timestamp;
// 获取当前时间
time(¤t_time);
timestamp = localtime(¤t_time);
// 格式化时间为字符串
strftime(line, sizeof(line), "%Y-%m-%d %H:%M:%S", timestamp);
// 计算并格式化行号
int line_number = getLineNumber();
snprintf(line + strlen(line), sizeof(line) - strlen(line), ", %d", line_number);
// 写入文件
fprintf(file_descriptor, "%s\n", line);
}
// 获取当前文件的行号
int getLineNumber() {
static int counter = 0; // 使用静态变量防止每次打开文件都从0开始计数
return ++counter;
}
int main() {
int file_desc;
// 打开文件
if ((file_desc = open(FILE_NAME, O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR)) == -1) {
perror("Failed to open file");
return 1;
}
while (true) {
write_to_file(file_desc); // 每隔一定时间写入一次
sleep(INTERVAL_SECONDS); // 睡眠指定秒数
}
// 关闭文件
close(file_desc);
return 0;
}
```
这个程序会创建名为"1.txt"的文件(如果不存在),然后每秒往文件追加一行,包含当前时间以及递增的行号。请注意,由于这里使用了`sleep()`函数,实际运行时可能会因为睡眠导致实时性稍有偏差。
阅读全文