【问题标题】:Reading from console output in C++ [duplicate]从 C++ 中的控制台输出读取 [重复]
【发布时间】:2018-03-22 14:16:59
【问题描述】:

我正在尝试用“C++”为 linux 制作一个软件,它可以读取 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)

此命令打印依赖项列表和具有二进制文件的位置。 我想将此输出保存在变量或其他内容中以供以后格式化。

【问题讨论】:

标签: c++ linux console


【解决方案1】:

为此,通常必须使用管道函数运行我们想要从中获取输出的程序: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() writes output of command executed to cout

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 2014-02-04
    • 2019-12-24
    • 2023-03-21
    • 2013-10-18
    • 2015-06-23
    相关资源
    最近更新 更多