سؤال

وأنا باستخدام QProcess-مشروع بسيط على آلة-يندوز إكس بي:

QString program = "U:\\ffmpeg.exe";
QStringList arguments;
arguments << "-i" << "U:\\clock.avi" << "U:\\tmp_jpeg\\foo-%03d.jpeg";

process.setStandardOutputFile("U:\\log.txt", QIODevice::Append);
process.start(program, arguments);

وعملية تعمل على ما يرام، فمبيج يخلق كل الملفات أريد أن. لكن سجل ملف يحتفظ فارغة تماما. والشيء نفسه يحدث عندما أريد أن أكتب والمخرجات القياسية في qDebug () ... لماذا يحدث هذا وكيف يمكنني إصلاحه؟

هل كانت مفيدة؟

المحلول

وهذا يحدث لأن عادة عمليات الطباعة في ملفين: "الإخراج القياسي" ملف وملف "الخطأ القياسي". مبرمج يمكن أن تقرر أي ملف لانتاج (يتم الدخول إليها عبر std::cout وstd::cerr) يدويا. وبحكم التجربة هي الطباعة إلى المعياري النتيجة الفعلية للبرنامج، وستدير - أخطاء، والتشخيص وغيرها

وأركض فمبيج ويحدث ذلك، وأنه يطبع شيئا لالمعياري (ربما، تحفظ عليه لوضع خاص، حيث يتم طباعة ملف المشفرة هناك)، ويتم طباعة كافة رسائل نصية إلى ستدير. لذلك يجب عليك استخدام setStandardErrorFile() وظيفة لالتقاط الإخراج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top