C++ 从控制台输出读取C++;

C++ 从控制台输出读取C++;,c++,linux,console,C++,Linux,Console,我正在尝试为linux制作一个“C++”软件,用于读取ldd控制台应用程序的控制台输出。我想知道在系统的共享文件中是否有任何“.so”库,或者以另一种方式在控制台中纯粹读取此命令的输出。以下是命令输出的示例: ldd ./echo linux-vdso.so.1 => (0x00007fffdd8da000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe95daf4000) /lib64/ld

我正在尝试为linux制作一个“C++”软件,用于读取ldd控制台应用程序的控制台输出。我想知道在系统的共享文件中是否有任何“.so”库,或者以另一种方式在控制台中纯粹读取此命令的输出。以下是命令输出的示例:

ldd ./echo
    linux-vdso.so.1 =>  (0x00007fffdd8da000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe95daf4000)
    /lib64/ld-linux-x86-64.so.2 (0x000055a6179a6000)
此命令打印具有二进制文件的依赖项和位置的列表。
我想将此输出保存在变量或其他文件中,以便稍后格式化。

为此,通常必须使用管道函数运行我们希望从中获取输出的程序:
popen()

通过这种方式,您可以获得ldd的输出,并对其执行任何您喜欢的操作

还有一个问题您可能会发现很有用:


您是否曾经将一个可执行文件的输出传递到另一个文件中?也考虑<代码> Booost。进程< /COD>这就是问题所在,我想知道在“/Urr/Cube”上是否有某种方式使用该库,或者只是从控制台读取它并将其保存到变量中。我在linux编程方面没有太多经验。检查这个
string data;
FILE * stream;
const int max_buffer = 256;
char buffer[max_buffer];

    stream = popen(cmd.c_str(), "r");
    if (stream) {
        while (!feof(stream)) {
            if (fgets(buffer, max_buffer, stream) != NULL) {
                data.append(buffer);
            }
        }
        pclose(stream);
    }
}