-
启动进程:
cppCopy codeQProcess process; process.start("your_executable");
在上述代码中,
start
方法用于启动一个外部进程。你需要将"your_executable"
替换为你要运行的可执行文件的路径。 -
等待进程完成:
cppCopy codeif (process.waitForFinished()) { // 进程已经完成 }
waitForFinished
方法会阻塞当前线程,直到进程完成执行。你也可以使用waitForStarted
和waitForReadyRead
来等待进程开始和产生输出。 -
读取进程输出:
cppCopy code QByteArray output = process.readAllStandardOutput();
上述代码将获取进程的标准输出。你还可以使用
readAllStandardError
读取标准错误输出。 -
进程信号:
cppCopy codeQObject::connect(&process, SIGNAL(finished(int, QProcess::ExitStatus)), yourObject, SLOT(yourSlot()));
使用
finished
信号,你可以在进程完成时执行某些操作。可以连接到该信号的槽函数,以便在进程完成时进行处理。 -
传递参数:
cppCopy codeQStringList arguments; arguments << "arg1" << "arg2"; process.setArguments(arguments);
使用
setArguments
方法可以传递参数给外部进程。 -
写入进程输入:
cppCopy codeprocess.write("input_data"); process.closeWriteChannel(); // 告诉进程写入已完成
使用
write
方法可以将数据写入进程的标准输入。closeWriteChannel
告诉进程输入已完成。 -
终止进程:
cppCopy codeprocess.terminate(); // 等待进程优雅地退出 // 或 process.kill(); // 立即终止进程
使用
terminate
方法会向进程发送终止信号,让进程有机会进行清理。而kill
方法会立即终止进程。8.杀死指定进程
void killProcessByQProcess()
{
QString strExe = "QQBrowser.exe";
qInfo() << "killProcess start" << strExe;
//调用cmd的方法结束进程
QString strKill = QString("taskkill /im %1 /f").arg(strExe);
if (0 != QProcess::execute(strKill)) {
qInfo() << "killProcess error" << strExe;
}
}