从控制台输出读取 C++
Reading from console output in C++
我正在尝试为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
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++将文本文件中的数据读取到结构数组中
- 正在将csv文件读取为双精度矢量
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 为什么在读取文件大小时文件IO速度会发生变化
- 正在读取二进制文件(is_open)
- 如何在c++中从文本文件中逐行读取整数
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 独立读取-修改-写入顺序
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 一种在C++中读取TXT配置文件的简单方法