【发布时间】:2015-08-21 06:36:19
【问题描述】:
我想为一个程序创建一个日志文件,为此我想创建并打开一个.txt 文件,并使其可供整个程序写入。
例如,我有一个全局文件指针fp,它已在文件“debug.c”中创建。现在我使用一个函数打开了文件:
void initlog()
{
fp = fopen("filename.txt","w");
}
如果我使用上述函数打开文件是否可以在程序的其他部分写入/附加到同一个文件?
我可以将fp使用extern关键字分享给其他文件吗,这样可以在其他文件中获取打开的文件指针(fp)吗?
编辑
不能使用线程,因为它是一个单线程程序
【问题讨论】:
-
如果你不使用线程,我认为这没有问题。
-
是的。但可以说最好不要那样做。而是实现一个日志工具,它导出 API 以写入日志。然后程序的其他部分将调用 API,而不是直接写入文件。
-
@AlanAu 日志记录工具是什么意思?如果我想写入日志,那么我还需要一个打开的文件指针,所以我必须经常打开和关闭文件,为了避免我第一次打开文件并使打开的文件指针全局,那么我可以在需要时写入文件并在日志末尾关闭文件吗?这样可以避免频繁打开和关闭文件..
-
不,你不需要把 fp 给每个人。在 debug.c 中实现
initlog和一个附加的wrtitelog函数。只有那些功能需要 fp。其他地方只需调用writelog。这只是一个简单的例子。一个真正的日志记录工具会做更多的事情(例如不同级别的日志记录)。这只是标准的模块化设计。因此,如果您想稍后更改日志记录(例如改为写入控制台),则只需更改内部日志记录实现。