QProcess调用外部程序:QProcess::start与QProcess::execute

来源:互联网 发布:js怎么给file控件赋值 编辑:程序博客网 时间:2024/06/05 06:03

转自:http://blog.csdn.net/lvc851116/article/details/8137202

QT提供了一个QProcess类用于启动一个外部程序并与之通信。

QProcess::start()与QProcess::execute()都能完成启动外部程序的任务,二者有什么区别呢?

区别在于start()是非阻塞的,而execute()是阻塞的。专业点讲,execute()=start()+waitforFinished()。

下面是一个按键的槽函数,它响应按键的按下动作:

    QString program = "amixer";    QStringList arguments_mute_on;    arguments_mute_on<<"cset"<<"numid=1"<<"0";    volCtrl->execute(program,arguments_mute_on);    close();

而开始我用的是volCtrl->start(program,arguments_mute_on),结果调用的程序无效,设置不起作用,经过分析原因是后面还有个close()函数。

这里显然应该是调用阻塞进程的典型场合。