非常抱歉之前的回答仍然没有解决问题。经过再次检查您的代码,我发现问题出在 'checkProcessExists()' 函数中的实现方式。

'checkProcessExists()' 函数使用 'pidof' 命令来检查进程的存在性,但 'pidof' 命令可能会返回多个进程ID,而您只需要检查给定进程名的进程是否存在。

为了解决这个问题,我建议您使用 'pgrep' 命令来检查进程的存在性。'pgrep' 命令会返回匹配给定进程名的进程ID,如果进程不存在,则返回空。

以下是修改后的示例代码:

bool MONITOR_BASE::checkProcessExists(const std::string& process_name)
{
    std::string command = "pgrep -x " + process_name;
    std::string result = execCommand(command);

    return !result.empty();
}

在这个修改后的示例代码中,我们使用 'pgrep -x' 命令来检查进程的存在性。'-x' 参数表示仅匹配完全匹配给定进程名的进程。

请确保在调用 'checkProcessExists()' 函数时传递正确的进程名。

希望这次的回答能够解决问题。非常抱歉之前的错误回答给您带来的困惑。如果您还有任何其他问题,请随时提问。

C++ 检查进程是否存在:使用 pgrep 命令替代 pidof

原文地址: https://www.cveoy.top/t/topic/G12 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录