Linux系统按名称查找程序并杀死程序
linux还是window系统,打开程序前先要关闭之前打开程序和子程序,可以按照名称来杀死进程;多个进程也可以用一个命令全部杀死;
QProcess p; #ifdef _WIN32 QString videoplayer = "taskkill /f /im videoplayer.exe"; //exeFileName为要杀死的进程名 QString AnalysisCenter = "taskkill /f /im AnalysisCenter.exe"; //exeFileName为要杀死的进程名 QString regionfilter= "taskkill /f /im regionfilter.exe"; //exeFileName为要杀死的进程名 QString qstrExeName = "OvitFrame.exe"; #else QString videoplayer = "killall -9 videoPlayer"; //exeFileName为要杀死的进程名 QString AnalysisCenter = "killall -9 AnalysisCenter"; //exeFileName为要杀死的进程名 QString regionfilter = "killall -9 regionfilter"; //exeFileName为要杀死的进程名 QString qstrExeName = "OvitFrame"; #endif p.execute(videoplayer); p.execute(AnalysisCenter); p.execute(regionfilter); p.close();
如果想根据名称查找到进程,再根据进程Id杀死其中部分程序,则可以按照下面的方式来实现。
void OvitApplication::KillAnotherProcess(const QString &appName, const quint64 &quintId) { LOG_INFO("KillAnotherProcess %s", appName.toStdString().c_str()); bool res = false; #ifdef _WIN32 MODULEENTRY32 me32 = { 0 }; HANDLE hToolHelp32Snapshot; hToolHelp32Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 pe = { sizeof(PROCESSENTRY32) }; BOOL isSuccess = Process32First(hToolHelp32Snapshot, &pe); while (isSuccess) { char cExePath[260] = { 0 }; char cExeAbsPath[260] = { 0 }; sprintf(cExePath, "%S", pe.szExeFile); string strExePath = cExePath; if (0 == strExePath.compare(appName.toStdString().c_str())) { HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pe.th32ProcessID); if (pe.th32ProcessID == quintId) { isSuccess = Process32Next(hToolHelp32Snapshot, &pe); continue; } if (hProcess) { if (GetModuleFileNameExA(hProcess, NULL, cExeAbsPath, MAX_PATH) == 0) { LOG_INFO("GetModuleFileNameExA error=%d cExeAbsPath:%s", GetLastError(), cExeAbsPath); } else { string strExeAbsPath = cExeAbsPath; QProcess p; QString c = "taskkill /pid " + QString("%1").arg(pe.th32ProcessID) + " /f"; LOG_INFO("KillAbsPathProcess find Process Running,cmd:%s", c.toStdString().c_str()); p.execute(c); p.close(); CloseHandle(hProcess); } } //CloseHandle(hProcess); } isSuccess = Process32Next(hToolHelp32Snapshot, &pe); } CloseHandle(hToolHelp32Snapshot); #else QProcess process; process.start("pidof OvitFrame"); if (process.waitForFinished()) { QString bytes = process.readAll(); if (bytes.contains(QString::number(quintId))) { bytes.remove(QString::number(quintId)); if (bytes!=""&& bytes!=" ") { process.execute("kill -9 " + bytes); } } } #endif }
//exeFileName为要杀死的进程名
自己开发了一个股票智能分析软件,功能很强大,需要的关注微信公众号:QStockView
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix