通过打开文件描述符并重定向 stdout,可以将使用 printf 输出的日志写入文件中,步骤包括:打开文件描述符将 stdout 重定向到文件描述符使用 printf 打印日志关闭文件描述符
使用 printf 输出日志到文件
方法:
- 打开一个文件描述符
FILE *f = fopen("log.txt", "w");
- 将 stdout 重定向到文件描述符
dup2(fileno(f), STDOUT_FILENO);
- 现在,所有打印到标准输出的内容(例如使用 printf)都会被写入文件
printf("日志消息n");
- 完成输出后,关闭文件描述符
fclose(f);
示例:
#include <stdio.h>
#include <unistd.h>
int main() {
// 打开一个文件描述符
FILE *f = fopen("log.txt", "w");
// 将 stdout 重定向到文件描述符
dup2(fileno(f), STDOUT_FILENO);
// 打印到 stdout
printf("日志消息n");
// 关闭文件描述符
fclose(f);
return 0;
}</unistd.h></stdio.h>
优点:
- 简单易用
- 不需要额外的库
缺点:
- 不能控制日志级别
- 只能输出到一个文件