Comment exécuter une commande et obtenir sa sortie en C++ (POSIX) ?
Bonjour, collègues ! Je viens de commencer à apprendre le C++ sous Linux et j'ai rencontré un problème : je dois exécuter une commande externe (par exemple `ls -la` ou `ping google.com`) et récupérer sa sortie directement dans le programme. J'ai essayé `system()` — elle fonctionne, mais ne retourne que le code de sortie, tandis que la sortie elle-même s'affiche dans la console. J'ai besoin de capturer cette sortie dans une chaîne pour la traiter ensuite.
Par exemple, j'écris un utilitaire qui vérifie quels processus sont en cours d'exécution. Je veux exécuter `ps aux` et analyser le résultat. Mais comment faire cela en C++ dans le style POSIX ? J'ai entendu parler de `popen()`, mais je ne suis pas sûr que ce soit la meilleure méthode. Il y a aussi `fork()`, `exec()`, `pipe()` — cela semble compliqué pour un débutant. Existe-t-il une méthode simple et fiable ?
Voici mon code actuel, qui ne fonctionne pas comme souhaité :
```cpp
#include
#include
int main() {
int result = system("ls -la");
std::cout << "Exit code: " << result << std::endl;
// Et où est la sortie ? Elle est seulement à l'écran, pas dans une variable.
return 0;
}
```