QT QProcess 不能结束外部进程

leaderofring 2017-05-27 10:42:05
想在qt的ui下,实现一个按钮调用外部程序,一个按钮结束
进程是在shell里调用运行,一个按钮调用该shell:poc->start("/home/ubuntu/****/test")
另一个按钮则用:poc->kill() 结束进程
但调用后发现不能结束该进程,求教该怎么结束进程?
...全文
2614 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒懒的吉他手 2017-11-03
  • 打赏
  • 举报
回复
linux下我最后用的sh脚本,用Qt来调用来杀线程……
Joe_HUST 2017-11-03
  • 打赏
  • 举报
回复
void MainWindow::on_pushButton_clicked() { QStringList arguments; QString program ="/usr/bin/firefox"; arguments<<""; QProcess *myProcess = new QProcess(this); myProcess->start(program,arguments); qDebug("start a new process"); myProcess->waitForStarted(); qDebug("start OK!"); sleep(20); myProcess->kill(); qDebug("killed OK!"); } Linux下OK
qq_27204627 2017-09-27
  • 打赏
  • 举报
回复
请问最后怎么实现的
leaderofring 2017-05-31
  • 打赏
  • 举报
回复
引用 2 楼 qqwangfan 的回复:
void QProcess::kill() Kills the current process, causing it to exit immediately. kill()函数是kill掉当前进程,因此你没法kill掉外部进程。 1.如果想kill掉外部进程,使用命令行kill掉即可,即调用QProcess的start函数, 第一个参数传的是命令行的路径,我本机是“C:\Windows\system32\cmd.exe”, 第2个参数是关闭进程命令:taskkill /im 进程名 /f im=image name,f=force表示强行结束。 windows下用上面方法关闭。 2. linux下直接传命令即可,如proc->start("kill -9 /home/ubuntu/****/test ");
感谢你的回答,不过linux下的方法没有效果。 另外,如果我想用qt QProcess打开linux的终端,然后将参数传入终端,应该怎么写。
jklinux 2017-05-27
  • 打赏
  • 举报
回复
试下: proc->terminate(); proc->waitForFinished(); //等待退出
懒懒的吉他手 2017-05-27
  • 打赏
  • 举报
回复
win系统下,调用时记住进程的pid,然后kill的时候用pid来kill
  • 打赏
  • 举报
回复
void QProcess::kill() Kills the current process, causing it to exit immediately. kill()函数是kill掉当前进程,因此你没法kill掉外部进程。 1.如果想kill掉外部进程,使用命令行kill掉即可,即调用QProcess的start函数, 第一个参数传的是命令行的路径,我本机是“C:\Windows\system32\cmd.exe”, 第2个参数是关闭进程命令:taskkill /im 进程名 /f im=image name,f=force表示强行结束。 windows下用上面方法关闭。 2. linux下直接传命令即可,如proc->start("kill -9 /home/ubuntu/****/test ");

16,201

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧