【问题标题】:How can I use fprintf and write to a pipe?如何使用 fprintf 并写入管道?
【发布时间】:2010-10-13 14:56:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: c pipe system printf


    【解决方案1】:

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

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

    fdopen 是一个 Posix 函数,记录在 man fdopen 中。反过来你可以使用fileno

    【讨论】:

    • 文件描述符保持打开状态,直到您关闭流,此时它将根据手册页关闭文件描述符。
    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    相关资源
    最近更新 更多