QProcess :: setStandardOutputFile создает только 0kb файл - PullRequest
3 голосов
/ 26 октября 2009

Я использую простой QProcess-Project на WindowsXP-машине:

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);

Процесс работает просто отлично, ffmpeg создает все файлы, которые я хочу. Но файл журнала хранится полностью пустым. То же самое происходит, когда я хочу написать стандартный вывод в qDebug () ... Почему это происходит и как я могу это исправить?

1 Ответ

8 голосов
/ 26 октября 2009

Это происходит потому, что обычно процесс печати выполняется в два файла: файл «стандартный вывод» и файл «стандартная ошибка». Программист может вручную решить, какой файл выводить (доступ к ним осуществляется через std::cout и std::cerr). Основное правило - выводить на печать стандартный результат программы, а stderr - ошибки, диагностику и т. Д.

Я запускаю ffmpeg, и так получилось, что он ничего не печатает на стандартный вывод (возможно, зарезервировав его для специального режима, где там печатается закодированный файл), и все текстовые сообщения выводятся на стандартный вывод. Таким образом, вы должны использовать функцию setStandardErrorFile() для захвата вывода.

...