如何将fprintf输出重定向到C套接字?

Beh*_*z.M 4 c sockets printf

如何将fprintf输出重定向到套接字?

我正在编辑有很多fprintf调用的源代码。它记录到文件。但我想将此日志重定向到套接字。

如何才能做到这一点?

Jon*_*ler 5

在类似Unix的系统上,打开套接字(获取文件描述符)。

将套接字映射到 stderr

如果尚未使用stderr,则可以简单地使用dup2()将套接字插入输出通道。即使您已将一些数据发送到原始数据,也可以执行此操作stderr。评论中关于使用的建议fflush()可能是相关的,尽管stderr通常没有缓冲,而不是完全缓冲(因此通常没有要刷新的内容)。

freopen()功能可用于更改流的输出,例如stderr(特别是)。嗯,您freopen()能用来映射stderr/dev/fd/N套接字的文件描述符N吗?是的,您可能可以。

将套接字映射到其他流

重新阅读您的问题-我看不到stderr。因此,该fdopen()函数从文件描述符创建流。因此,如果您可以指定要写入的日志记录流,那么您就到了。如果您不能指定它但可以看到它,那么freopen()上面的技巧也应该在这里起作用。