Como executar um comando e obter sua saída em C++ (POSIX)?
Olá, colegas! Comecei a aprender C++ no Linux e me deparei com uma tarefa: preciso executar um comando externo (por exemplo, `ls -la` ou `ping google.com`) e obter sua saída diretamente no programa. Tentei `system()` — ela funciona, mas retorna apenas o código de saída, e a saída em si é exibida no console. Preciso capturar essa saída em uma string para processá-la depois.
Por exemplo, estou escrevendo um utilitário que verifica quais processos estão em execução. Quero executar `ps aux` e analisar o resultado. Mas como fazer isso em C++ no estilo POSIX? Ouvi falar sobre `popen()`, mas não tenho certeza se é a melhor maneira. Também existem `fork()`, `exec()`, `pipe()` — isso parece complicado para um iniciante. Existe algum método simples e confiável?
Aqui está meu código atual, que não funciona como esperado:
```cpp
#include
#include
int main() {
int result = system("ls -la");
std::cout << "Exit code: " << result << std::endl;
// E onde está a saída? Ela só aparece na tela, não em uma variável.
return 0;
}
```