Cómo ejecutar un comando y obtener su salida en C++ (POSIX)
¡Hola, colegas! Acabo de empezar a aprender C++ en Linux y me encontré con una tarea: necesito ejecutar un comando externo (por ejemplo, `ls -la` o `ping google.com`) y obtener su salida directamente en el programa. Probé `system()` — funciona, pero solo devuelve el código de salida, mientras que la salida se muestra en la consola. Necesito capturar esa salida en una cadena para procesarla después.
Por ejemplo, estoy escribiendo una utilidad que verifica qué procesos están en ejecución. Quiero ejecutar `ps aux` y analizar el resultado. Pero, ¿cómo hacerlo en C++ al estilo POSIX? He oído hablar de `popen()`, pero no estoy seguro de que sea la mejor manera. También están `fork()`, `exec()`, `pipe()` — esto parece complicado para un principiante. ¿Quizás hay algún método simple y confiable?
Aquí está mi código actual, que no funciona como debería:
```cpp
#include
#include
int main() {
int result = system("ls -la");
std::cout << "Exit code: " << result << std::endl;
// ¿Y dónde está la salida? Solo está en la pantalla, no en una variable.
return 0;
}
```
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Trabajo con fechas y horas en C++: guía completa