简介:最近主加工软件存在端口被占用的情况,每次查的麻烦,就写了小东西


QString MainWindow::getPortProcessInfo(quint16 port) { QProcess process; // 使用 netstat 命令查找特定端口 process.start("netstat", QStringList() << "-ano" << "-p" << "TCP"); if (!process.waitForFinished(3000)) { return QString::fromLocal8Bit("无法执行netstat命令"); } QString output = QString::fromLocal8Bit(process.readAllStandardOutput()); QStringList lines = output.split("\n"); // 查找包含端口号的行 QString pattern = QString(":%1 ").arg(port); for (const QString &line : lines) { if (line.contains(pattern) && line.contains("LISTENING")) { return line.trimmed(); } } return QString::fromLocal8Bit("端口未找到"); }
QString getProcessNameById(qint64 pid) { QProcess process; process.start("tasklist", QStringList() << "/FO" << "CSV" << "/NH" << "/FI" << QString("PID eq %1").arg(pid)); if (process.waitForFinished(2000)) { QString output = QString::fromLocal8Bit(process.readAllStandardOutput()); if (!output.isEmpty()) { // CSV格式: "进程名","PID","会话名","会话#","内存使用" QStringList parts = output.split("\",\""); if (parts.size() >= 1) { QString name = parts[0]; if (name.startsWith('"')) { name = name.mid(1); } return name; } } } return QString::fromLocal8Bit("未知进程"); }
浙公网安备 33010602011771号