QProcess :: setStandardOutputFile يخلق فقط 0KB الملف
سؤال
وأنا باستخدام 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()
وظيفة لالتقاط الإخراج.