Avatar ·

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