如何将 fprintf
输出重定向到套接字?
我正在编辑包含大量 fprintf
调用的源代码。它记录到一个文件。但我想将此日志重定向到套接字。
如何做到这一点?
最佳答案
在类 Unix 系统上,打开套接字(获取文件描述符)。
将套接字映射到stderr
如果您还没有使用过stderr
,您可以简单地使用dup2()
使套接字进入输出 channel 。即使您已将一些数据发送到原始 stderr
,您也可以这样做。评论中关于使用 fflush()
的建议可能是相关的,尽管 stderr
通常是无缓冲的而不是完全缓冲的(因此通常没有任何要刷新的东西)。
freopen()
函数可用于更改流的输出,例如 stderr
(特别是)。嗯,你可以使用 freopen()
将 stderr
映射到 /dev/fd/N
,其中 N 是套接字的文件描述符?是的,你可能可以。
将套接字映射到其他流
重新阅读您的问题 - 我没有在其中看到 stderr
。所以 fdopen()
函数从文件描述符创建一个流。因此,如果您可以指定日志记录要写入的流,那么您就大功告成了。如果您不能指定它但可以看到它,那么上面的 freopen()
技巧也应该在这里起作用。
关于c - 如何将 fprintf 输出重定向到 C 套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8776103/