Linux Qt编程——在程序中启动其他应用、脚本
上一篇 /
下一篇 2012-05-24 10:20:42
/ 个人分类:Linux
我们在编程过程中,经常会遇到这样的需求,点击一下按钮,启动另外一个应用程序,或者执行一个脚本。你一定觉得这个多简单啊,有什么可写的?其实实
现同一个功能,不同的开发人员写出的代码可能千差万别,执行效率,容错率,是否有唯一启动保护等……当然,我们还是需要通过衡量具体的需求和环境来设计自
己的代码,量体裁衣。51Testing软件测试网N%y\ ^HA0_ 最简单的,我们可以通过system直接启动一个应用程序或者脚本:51Testing软件测试网`3q-fv n
system("./helloworld");51Testing软件测试网u(FWR@1NV
V2v system("./hello.sh"); |
5O8Wr_(BJ0 操作简单,但是我们可以很清晰的看到弊端:虽然很顺利的匹出一个进程去执行另外一个应用,但是我们拿不到这个新进程的任何东西,也就失去了对这个进程的控制权。所以我们可以尝试利用QProcess:51Testing软件测试网"|ml6c z:Y:a*h
void Widget::startApps(QString str) |Q+Y&m}Y0{ 1`4r"wO*[n0 QProcess *proc = new QProcess(); -O%c7a"Z%E4Q~T0 proc->start(str); 51Testing软件测试网&Y(]'\
yC?p4pJJ } |
0X}?0f4F)S*a0 拿到proc指针,我们可以做一些我们想做的事情。做嵌入式应用编程的朋友可能时常会受到环境变量的困扰,很纳闷为什么总是找不到这库那库。所以我们可以再完善一下:51Testing软件测试网X{&D0j6g
void Widget::startApps(QString str)51Testing软件测试网Y#|z%i+Z {51Testing软件测试网%? fwJ @/K~7|6qh@ QProcess *proc = new QProcess();51Testing软件测试网(X:s
l O"U/h U\ proc->setEnvironment(proc->environment()); T/nrz1~ W2u,\6vW/bO0 proc->start(str);51Testing软件测试网1XS&ut Odf I proc->waitForStarted();51Testing软件测试网9j4Is
Z3t%vZ } |