У нас есть QProcess, который запускает скрипт bash. Сценарий завершается должным образом и выдает ожидаемый результат, но для завершения готового сигнала требуется очень много времени (минут). По сути, наш скрипт генерирует зашифрованный тарбол из списка файлов, переданных в качестве аргумента. Последний пакет находится на диске в целости и сохранности, но процессу требуется очень много времени, чтобы вернуться. Это мешает нашему пользовательскому интерфейсу перейти к следующей задаче, потому что мы должны убедиться, что скрипт завершился программно, а не путем проверки. Мы не делаем ничего, кроме
connect(myProcess, SIGNAL(finished()), mySlot, SLOT(tidyUp()));
myProcess.start();
Мы можем отслеживать размер файла с помощью Qt, и у нас есть оценка его окончательного размера на основе списка файлов, который мы передаем сценарию, но сценарий зависает в течение очень долгого времени после того, как файл достиг своего предполагаемого размера. Мы вставили операторы syn c, но это, похоже, не имеет никакого эффекта. Когда скрипт запускается из командной строки, файл увеличивается, и скрипт останавливается, как только достигает своего окончательного размера.
Почему QProcess не отправляет сигнал о завершении сразу после завершения скрипта?
Мы бы очень хотели прикрепить индикатор выполнения, показывающий процент от произведенного размера файла, или дать какой-либо другой показатель прогресса, но мы озадачены этим поведением. Мы попытались использовать рабочий поток, перемещенный в QThread, и запустить QProcess непосредственно в занятом l oop, вызывая processEvents (), но безрезультатно.