QT4:为啥 bash shell 比使用 QProcess 调用的相同脚本更快?

Posted

技术标签:

【中文标题】QT4:为啥 bash shell 比使用 QProcess 调用的相同脚本更快?【英文标题】:QT4: why bash shell is faster, than the same script, called using QProcess?QT4:为什么 bash shell 比使用 QProcess 调用的相同脚本更快? 【发布时间】:2012-08-09 09:15:10 【问题描述】:

我举个例子: 脚本应该检测到文件创建已完成:

#!/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 行睡眠/

有办法解决吗?因为时间在我的项目中很关键...... 谢谢指教

【问题讨论】:

慢的不是这个脚本;它是文件“$TYPE$CID.jpeg”的增长率。是什么产生的?无论如何,这都不是确定文件何时完成的好方法。 $TYPE$CID.jpeg 是我在更快的机器上改造的图像。通常,它在我开始检查之前就准备好了——因为当我从命令行检查它时,我没有一行“睡眠”... QT4 : QProcess bash; bash.start("./scan.sh p1 p2"); ... 【参考方案1】:

谢谢大家,我找到了解决办法, 问题是 QT Cashe... 所以我只使用了 QFileInfo::refresh(), QProcess 没用

【讨论】:

以上是关于QT4:为啥 bash shell 比使用 QProcess 调用的相同脚本更快?的主要内容,如果未能解决你的问题,请参考以下文章

在本地进行shell脚本中执行svn命令,为啥提示bash: svn: command not found?

为啥我根本没用到Git Shell命令行

为啥linux 的 source命令在linux的脚本中没有作用 我使用了#!/bin/sh以及#!/bin/bash 都不好用

ubuntu系统用bash-shell时上下左右键能用,换成csh-shell时上下左右键就变成了^[[A^[[B^[[D^[[C,为啥?

Ubuntu下把缺省的dash shell修改为bash shell

Linux系统Bash(Shell)基础知识