2012-08-09 52 views
2

讓我舉一個例子: 腳本應該檢測,該文件創建完成:QT4:爲什麼bash shell比使用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 

當我打電話從shell執行它,它是非常快的:沒有一個行「沉睡」在輸出/ scan.log /,所以文件準備在1秒/第一次睡眠就夠了/ 同時,當我從QT調用相同的腳本時,我必須等待超過5秒/超過14行睡眠/

它可以修復它嗎?隨着時間的是我的項目的關鍵... 感謝您的建議

+0

你如何從Qt中調用它? – 2012-08-09 12:59:26

+0

這不是這個腳本很慢;它是文件「$ TYPE $ CID.jpeg」的增長率。什麼是生產?無論如何,這不是確定文件何時完成的好方法。 – chepner 2012-08-09 16:19:31

+0

$ TYPE $ CID.jpeg是我在更快的機器上改造的圖像。 通常,在我開始檢查之前就已經準備好了 - 因爲當我從命令行檢查它時,我沒有一行「睡眠」... QT4: QProcess bash; bash.start(「./ scan.sh p1 p2」); ... – nat 2012-08-10 08:29:45

回答

1

謝謝大家,我找出解決辦法, 問題是,所以我只是用QFileInfo ::刷新QT cashe ...
() , QProcess是無用的