c - 如何使用 fprintf 并写入管道?

标签 c pipe system printf

我创建了一个管道并使用 dup2() 将流 1 和 2(stdout 和 stderr)覆盖到这些管道中。

现在我希望使用 fprintf 写入流 1 或 2,但我的程序似乎没有在管道的另一端接收到任何东西。我试过使用 printf(),但我不确定这是否默认写入标准输出或流 1。如果它写入流 1,我猜它是我代码中某个更深层的问题。

本质上我是在问,给定一个表示流的 int,我怎样才能得到一个适合在 fprintf() 中使用的 FILE*?

最佳答案

如果你有一个文件描述符并且想要一个FILE*,你可以使用fdopen

FILE *fdopen(int fd, const char *mode);

fdopen是一个 Posix 函数并记录在 man fdopen 中。要执行相反的操作,您可以使用 fileno

关于c - 如何使用 fprintf 并写入管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650468/

相关文章:

c - 在 C 中打印一个带有两位小数但没有尾随零的 float

c - 如何在程序中grep一个字符串?

android - 如何在 Linux 中从 C 调用自定义系统调用

c - 多进程管道

c - parent 从文件中读取操作, child 将其与 bc 相加

c - 使用 system() 执行命令时如何设置环境变量?

c - Linux C : upon receiving a signal, 是否可以知道发送者的PID?

c - 如何将二维数组发送到函数?

c - 为什么以下代码在使用 system ("cls"后会改变其行为?

Cygwin 和 Netbeans : run on default Windows shell?