如何在C++(POSIX)中执行命令并获取其输出?
大家好!我刚开始在Linux上学习C++,遇到了一个问题:需要执行外部命令(例如`ls -la`或`ping google.com`)并在程序中直接获取其输出。我试过`system()`——它能工作,但只返回退出码,而输出本身会打印到控制台。我需要捕获这个输出到字符串中,以便后续处理。
例如,我正在编写一个工具来检查哪些进程正在运行。我想执行`ps aux`并分析结果。但如何在C++中以POSIX风格实现呢?我听说过`popen()`,但不确定这是否是最佳方法。还有`fork()`、`exec()`、`pipe()`——这些对新手来说看起来很复杂。有没有简单可靠的方法?
以下是我当前的代码,它无法按预期工作:
```cpp
#include
#include
int main() {
int result = system("ls -la");
std::cout << "Exit code: " << result << std::endl;
// 输出在哪里?它只在屏幕上,不在变量中。
return
```