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()函数。
这里显然应该是调用阻塞进程的典型场合。