标签:
windows端的Qt程序往往需要打开外部程序(如:prog.exe),并且需要确定这个外部程序是唯一打开的。
1、判断系统中是否存在prog.exe
void judge()
{
QProcess tasklist;
tasklist.execute("tasklist", QStringList()<<"-fi"<<"imagename eq prog.exe");
}
2、终止系统中的prog.exe进程
void kill()
{
QProcess taskkill;
taskkill.execute("taskkill", QStringList()<<"-im"<<"prog.exe"<<"-f");
}
3、打开外部程序prog.exe
void open()
{
QProcess newProg;
newProg.start("prog.exe", QStringList()<<"command");
}
番外1:
QProcess::execute(): ---- 以阻塞方式打开外部程序,只有当外部程序执行完后才继续往后执行现程序。其中,外部程序的标准输出、标准错误都是重定向到现程序的标准输出和标准错误。
QProcess::start(): ---- 以子进程的方式打开外部程序,外部进程和现进程执行互不干扰,但外部进程的父进程是现进程。
QProcess::startDetached():---- 以分离方式打开外部程序,外部进程和现进程执行互不干扰,外部进程的父进程是系统的init进程。
番外2:
1. tasklist -fi "imagename eq prog.exe" -- 显示进程名为prog.exe的进程信息
2. tasklist -fi "imagename ne prog.exe" -- 显示进程名不为prog.exe的进程信息
3. tasklist -fi "pid eq 1111" -- 显示进程号为1111的进程信息
4. taskkill -f -pid 1111 -- 强制终止进程号为1111的进程
5. taskkill -f -im prog.exe -- 强制终止所有进程名为prog.exe的进程树
6. taskkill -f -fi "imagename eq prog.exe" -- 强制终止所有进程名为prog.exe的进程树
http://blog.csdn.net/zuijinhaoma8/article/details/42061243
标签:
原文地址:http://www.cnblogs.com/findumars/p/4924725.html