如何将多个文件描述符合并为一个

How to merge multiple file descriptors into the one?

本文关键字:一个 合并 描述 文件      更新时间:2023-10-16

在我的c++应用程序中,我使用一些对第三方库的调用来创建一个新的子进程。我传递了2个FILE**变量给它,它们被子进程的stdoutstderr处理程序的指针填充。但实际上,我不需要在不同的线程中分别读取它们,我只需要将它们合并到一个线程中,然后从那里读取。我怎么能做到这一点(linux和Windows)?

使用dup2 (manpage)

#include <stdio.h>
#include <unistd.h>
dup2(fileno(stdout), fileno(stderr));

文件描述符由系统链接到物理文件。将两个文件描述符合并为一个将导致只得到一个文件。

如果你总是把这两个文件描述符放在一起,你可以简单地创建一个结构体,在一个变量指针中处理这两个文件描述符。