void MONITOR_BASE::clear_cpu_info_(std::string process_name)
{
    std::string check_process_cmd = 'pgrep ' + process_name;
    int process_id = system(check_process_cmd.c_str());

    if (process_name == 'auto_ad_monitor_node')
    {
        std::string check_process_cmd = 'pgrep ' + process_name;
        int process_id = system(check_process_cmd.c_str());

        if (process_id == 0)
        {
            cpu_info_.auto_ad_monitor_node.cpu.data = 0;
            cpu_info_.auto_ad_monitor_node.mem.data = 0;
            cpu_info_.auto_ad_monitor_node.vsz.data = 0;
        }
    }
    if (process_name == 'auto_ad_memory_monitor')
    {   
        std::string check_process_cmd = 'pgrep ' + process_name;
        int process_id = system(check_process_cmd.c_str());

        if (process_id == 0)
        {
            cpu_info_.auto_ad_memory_monitor.cpu.data = 0;
            cpu_info_.auto_ad_memory_monitor.mem.data = 0;
            cpu_info_.auto_ad_memory_monitor.vsz.data = 0;
        }
    }
    if (process_name == 'auto_ad_localization')
    {   
        std::string check_process_cmd = 'pgrep ' + process_name;
        int process_id = system(check_process_cmd.c_str());

        if (process_id == 0)
        {
            cpu_info_.auto_ad_localization.cpu.data = 0;
            cpu_info_.auto_ad_localization.mem.data = 0;
            cpu_info_.auto_ad_localization.vsz.data = 0;
        }
    }
    if (process_name == 'auto_ad_planning')
    {
        std::string check_process_cmd = 'pgrep ' + process_name;
        int process_id = system(check_process_cmd.c_str());
        
        if (process_id == 0)
        {
            cpu_info_.auto_ad_planning.cpu.data = 0;
            cpu_info_.auto_ad_planning.mem.data = 0;
            cpu_info_.auto_ad_planning.vsz.data = 0;
        }
    }
}

这个函数 clear_cpu_info_ 的功能是根据进程是否存在来清零对应进程的 cpu_info_ 的值。

函数的实现逻辑如下:

  1. 首先,使用 pgrep 命令检查指定进程名 (process_name) 是否存在,并将结果存储在 process_id 中。
  2. 接下来,根据 process_name 来判断需要清零的进程对应的 cpu_info_ 的值。
  3. 如果 process_id 为 0,说明进程不存在,则将对应进程的 cpu.datamem.datavsz.data 设置为 0。

这个函数可以确保 cpu_info_ 的值与进程的实际状态保持一致。

C++ 使用 pgrep 命令清零特定进程 CPU 信息

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

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