通过打开文件描述符并重定向 stdout,可以将使用 printf 输出的日志写入文件中,步骤包括:打开文件描述符将 stdout 重定向到文件描述符使用 printf 打印日志关闭文件描述符

使用 printf 输出日志到文件
方法:
- 打开一个文件描述符
<code class="cpp">FILE *f = fopen("log.txt", "w");</code>- 将 stdout 重定向到文件描述符
<code class="cpp">dup2(fileno(f), STDOUT_FILENO);</code>
- 现在,所有打印到标准输出的内容(例如使用 printf)都会被写入文件
<code class="cpp">printf("日志消息\n");</code>- 完成输出后,关闭文件描述符
<code class="cpp">fclose(f);</code>
示例:
<code class="cpp">#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;
}</code>优点:
- 简单易用
- 不需要额外的库
缺点:
- 不能控制日志级别
- 只能输出到一个文件










