从控制台输出读取 C++

Reading from console output in C++

本文关键字:C++ 读取 输出 控制台      更新时间:2023-10-16

我正在尝试为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()

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);
    }
}

通过这种方式,您可以获得ldd的输出并用它做任何您喜欢的事情。

您可能还会发现其他有用的问题:

popen(( 将执行命令的输出写入 cout