QProcess :: setStandardOutputFile só cria arquivo 0kb
Pergunta
Eu estou usando um simples QProcess-Project em um WindowsXP-Machine:
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);
O processo funciona muito bem, ffmpeg cria todos os arquivos que deseja. Mas o log-File mantém completamente vazio. O mesmo acontece quando eu quero escrever o padrão da saída em qDebug () ... Por que isso acontece e como posso corrigi-lo?
Solução
Isso acontece porque normalmente os processos de impressão em dois arquivos: arquivo de "saída padrão" e arquivo "erro padrão". Programador pode decidir manualmente o arquivo a saída para (eles são acessados ??via std::cout
e std::cerr
). A regra de ouro é para imprimir em stdout o resultado real do programa, e para stderr -. Erros, diagnósticos etc
Eu corro ffmpeg e acontece, que ele imprime nada para stdout (provavelmente, reservando-o para o modo especial, onde arquivo codificado é impresso lá), e todas as mensagens de texto são impressos no stderr. Portanto, você deve usar setStandardErrorFile()
função para capturar a saída.