C++ 检查进程是否存在: `checkProcessExists` 函数解析
C++ 检查进程是否存在: checkProcessExists 函数解析
checkProcessExists 函数用于检查给定进程名称的进程是否存在。
bool MONITOR_BASE::checkProcessExists(const std::string& process_name)
{
std::string check_process_cmd = 'pidof ' + process_name;
FILE* pipe = popen(check_process_cmd.c_str(), 'r');
char buffer[128];
std::string result = '';
while (fgets(buffer, sizeof(buffer), pipe) != nullptr)
{
result += buffer;
}
pclose(pipe);
return !result.empty();
}
函数解释:
- 接收参数: 函数接收进程名称作为参数
process_name,类型为std::string的引用。 - 构造命令: 通过将
process_name与系统命令 'pidof' 进行拼接,构造用于检查进程存在的命令check_process_cmd。 - 打开管道: 使用
popen函数以只读模式打开一个管道,执行check_process_cmd命令,将结果连接到文件指针pipe。 - 读取结果: 使用
fgets函数循环读取pipe中的输出,每次读取一行,并将结果追加到result字符串中。 - 关闭管道: 使用
pclose函数关闭管道。 - 判断结果: 如果
result字符串为空,则表示进程不存在,返回true;否则,返回false。
注意事项:
- 该函数使用了 C 语言库中的函数
popen、fgets和pclose来执行命令和处理管道。 - 在使用这些函数时,请确保在编译时包含了相关的头文件,并且在运行环境中可以执行相应的系统命令。
总结:
checkProcessExists 函数利用系统命令 pidof 和管道操作,有效地实现了进程是否存在判断的功能。通过该函数,程序可以方便地检测目标进程是否运行,并根据判断结果执行相应的操作。
原文地址: https://www.cveoy.top/t/topic/swV 著作权归作者所有。请勿转载和采集!