【发布时间】:2013-09-23 10:43:22
【问题描述】:
使用 python,我有一个守护进程以下列方式监视日志文件:
f = open(r'logfile.log', 'r')
while True:
line = f.readline()
if not line:
time.sleep(1)
else:
# do something
问题是,如果“做某事”部分是用 C 编写的,它的执行速度会快得多。所以,我想在 C 中做同样的事情。如何用 C 编写类似的跟踪日志文件的方法?
以下只是抓取整个文件,并对每一行执行“某些操作”。相反,我只想在日志文件中附加新行来“做某事”:)
FILE *fr;
char line[100];
fr = fopen ("logfile.log", "rt");
while(fgets(line, 100, fr) != NULL){
//do something
}
fclose(fr);
谢谢!
【问题讨论】:
-
“做某事”到底在做什么?
-
@Blender 没关系。想象一下它使用套接字,发送 shtuff,调用一个运行速度比 python/perl/bash 快 300 倍的函数 :)
-
打开文件后可以查找到文件末尾。你想用 C 还是 Python 来做?
-
@joni in C :) 我怎么不会错过任何额外的行?想象一个 log4j 进程写入一个日志文件。我想尾随那个文件,并用新添加的行来做事
-
您的
C代码将在日志文件没有短暂更新时退出,而您的 Python 代码将继续查找。你需要一个while (1)循环。
标签: python c file loops logfile