8

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

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

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

4

1 回答 1

8

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

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

fdopen是一个 Posix 函数,并记录在man fdopen. 要反过来,您可以使用fileno

于 2009-03-16T13:47:28.383 回答