QT4: почему оболочка bash работает быстрее, чем тот же скрипт, вызванный с помощью QProcess?

Приведу пример: скрипт должен определить, что создание файла завершено:

#!/bin/bash
CID=$1
TYPE=$2
echo "$TYPE$CID" >scan.log
sleep 1
FILE=$TYPE$CID.jpeg
until [ $(ls -l $FILE | awk '{print $5}') -gt 2000 ]
do
   echo "sleeping" >> scan.log
   sleep 0.4
done
SIZE=`du -h $FILE`
echo "$DT $SIZE " >> scan.log
cp $FILE $TYPE.jpegs

Когда я вызываю выполнить его из оболочки, это происходит очень быстро: ни одна строка не «спит» в выводе /scan.log/, поэтому файл готов через 1 секунду /достаточно первого сна/ Между тем, когда я вызываю тот же скрипт из QT мне приходится ждать более 5 секунд /более 14 строк сна/

Можно ли это исправить? так как время в моем проекте критично... Спасибо за совет


person nat    schedule 09.08.2012    source источник
comment
Это не этот скрипт медленный; это скорость роста файла $TYPE$CID.jpeg. Что это производит? В любом случае, это не лучший способ определить, когда файл завершен.   -  person chepner    schedule 09.08.2012
comment
$TYPE$CID.jpeg — это изображение, которое я преобразовал на более быстрой машине. Обычно он готов до того, как я начну проверять - так как при проверке из командной строки у меня не спит ни одна строчка... QT4 : QProcess bash; bash.start(./scan.sh p1 p2); ...   -  person nat    schedule 10.08.2012


Ответы (1)


Спасибо всем, я нашел решение, проблема была в кэше QT...
поэтому я просто использовал QFileInfo::refresh(), QProcess бесполезен

person nat    schedule 10.08.2012