كيفية تنفيذ أمر والحصول على مخرجاته في C++ (POSIX)?
مرحبًا أيها الزملاء! لقد بدأت للتو في تعلم C++ على Linux وواجهت مشكلة: أحتاج إلى تنفيذ أمر خارجي (مثل `ls -la` أو `ping google.com`) والحصول على مخرجاته مباشرة داخل البرنامج. جربت `system()` — إنها تعمل، لكنها تُرجع فقط رمز الإنهاء، بينما تُطبع المخرجات في وحدة التحكم. أحتاج إلى التقاط هذه المخرجات في string لمعالجتها لاحقًا.
على سبيل المثال، أكتب أداة تتحقق من العمليات الجارية. أريد تنفيذ `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 0;
}
```