程序实现功能:
打开一个记事本,在记事本程序运行期间不断的捕捉键盘输入,直到输入数字2,关闭记事本
心得:
(1)start函数调用后程序状态是starting
(2)要调用waitForStarted后程序状态才会显示running
(3)关闭程序要使用close,不要使用kill,使用kill会报“QProcess::start: Process is already running”
QProcess prc;
QString str="kwrite";
QStringList para;
para.append("/users/ems/.cshrc");
qDebug()<<QProcess::NotRunning<<"NotRunning";
qDebug()<<QProcess::Starting<<"Starting";
qDebug()<<QProcess::Running<<"Running";
qDebug()<<"state b4 start"<<prc.state();
prc.start(str,para);
qDebug()<<"state after started"<<prc.state();
if(!prc.waitForStarted())
{
qDebug()<<"fail to start";
return 0;
}
qDebug()<<"state after wait function called"<<prc.state();
while(prc.state()==QProcess::Running)
{
qDebug()<<"";
sleep(1);
int a;
qDebug()<<"input a digit:"<<endl;
std::cin>> a;
if(a==2)
{
prc.close();
qDebug()<<"doc killed";
qDebug()<<"state"<<prc.state();
break;
}
else
{
qDebug()<<"a="<<a<<endl;
qDebug()<<"state"<<prc.state();
}
}
qDebug()<<"state"<<prc.state();
程序运行结果如下: