Avatar ·

كيف تنفذ أمر نظام وتلتقط مخرجاته في Rust؟

مرحبًا أيها الزملاء! بدأت تعلم Rust وأكتب أداة صغيرة للأتمتة. أحتاج إلى تنفيذ أمر نظام خارجي (مثل `ls -la` أو `git status`) وقراءة مخرجاته (stdout و stderr) مباشرة في البرنامج، لمعالجة الأسطر لاحقًا. اطلعت على توثيق الوحدة `std::process::Command`، لكنني لم أتمكن من التقاط المخرجات بشكل صحيح. إليك ما جربته: ```rust use std::process::Command; fn main() { let output = Command::new("ls") .arg("-la") .output() .expect("فشل تنفيذ الأمر"); println!("stdout: {}", output.stdout); println!("stderr: {}", output.stderr); } ``` لكن في وحدة التحكم يظهر شيء مثل `stdout: [115, 111, 109, 101, 32, 116, 101, 120, 116]` — هذه بايتات وليست سلسلة نصية! كيف أحصل على نص قابل للقراءة؟ وماذا أفعل إذا انتهى الأمر بخطأ؟ أريد فهم كيفية معالجة حالة الخروج بشكل صحيح وكيفية التقاط stderr بشكل منفصل. شكرًا مقدمًا على المساعدة.