c++判断windows进程是否存在
#include <iostream>
#include <cstdio>
#include <cstring>
bool isProcessRunning(const std::string& processName) {
// 构建命令来查找指定进程
std::string command = "tasklist | findstr " + processName;
// 打开命令管道
FILE* pipe = _popen(command.c_str(), "r");
if (!pipe) {
std::cerr << "Failed to run command\n";
return false;
}
// 读取命令输出
char buffer[128];
bool found = false;
while (fgets(buffer, sizeof(buffer), pipe)) {
if (strstr(buffer, processName.c_str())) {
found = true;
break;
}
}
// 关闭管道
_pclose(pipe);
return found;
}
int main() {
std::string processName = "notepad.exe"; // 你要查找的进程名
if (isProcessRunning(processName)) {
std::cout << processName << " is running.\n";
} else {
std::cout << processName << " is not running.\n";
}
return 0;
}
代码解释
tasklist | findstr
_popen():这是 Windows 平台上的函数,打开一个进程的管道,并允许你从该命令的标准输出读取数据。你也可以使用标准的 popen() 函数,但它通常在 UNIX 系统上更常见。
fgets():从管道读取命令的输出。
strstr():检查命令输出中是否包含进程名称。
_pclose():关闭管道。
注意事项
_popen() 和 _pclose() 是 Microsoft 提供的扩展函数,仅在 Windows 平台上可用。
如果你希望在其他平台(例如 Linux)上使用类似的方法,应该使用 popen(),并相应地处理管道输出。
如果 findstr 找到指定的进程名称,isProcessRunning() 返回 true,否则返回 false。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人