C++ 检查进程是否存在:使用 pgrep 命令替代 pidof
非常抱歉之前的回答仍然没有解决问题。经过再次检查您的代码,我发现问题出在 '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()' 函数时传递正确的进程名。
希望这次的回答能够解决问题。非常抱歉之前的错误回答给您带来的困惑。如果您还有任何其他问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/G12 著作权归作者所有。请勿转载和采集!