【问题标题】:How get a process by know process name on mac os? [closed]如何通过mac os上的已知进程名称获取进程? [关闭]
【发布时间】:2026-01-01 02:40:01
【问题描述】:

如何在 mac os 上通过已知进程名称获取进程?

【问题讨论】:

  • 您应该将代码放入答案中,并对其进行格式化以使其更易于阅读。然后接受那个答案

标签: process system macos


【解决方案1】:

刚刚重新格式化了 Haley 的答案:

// Return YES if given name process in process list . Otherwise return NO 
bool IsInBSDProcessList(char *name)    { 
  assert( name != NULL); 
  kinfo_proc *result; 
  size_t count = 0; 
  result = (kinfo_proc *)malloc(sizeof(kinfo_proc)); 
  if(GetBSDProcessList(&result,&count) == 0) { 
    for (int i = 0; i < count; i++) { 
      kinfo_proc *proc = NULL; 
      proc = &result[i]; 
      if (strcmp(name, proc->kp_proc.p_comm) == 0) { 
        free(result);
        return true;
      }
    }
  } 
  free(result);
  return false;
} 

【讨论】:

  • 我认为 malloc() 是多余的。
  • 重新阅读此答案并添加为什么 malloc() 是多余的:在堆栈上分配 kinfo_proc 并获取指针也可以。
  • 如果有人在查找 GetBSDProcessList 函数时遇到问题。这是:developer.apple.com/legacy/library/qa/qa2001/qa1123.html
【解决方案2】:

你的问题比较模糊。您能否定义“获取流程”的含义?

一种方法(取决于您的定义):在 Applications/Utilities 中启动 Activity Monitor 应用,然后在列表中查找进程名称。

【讨论】:

  • 我写完了!我的示例: bool IsInBSDProcessList(char *name) // 如果给定名称 process 在 process list 中返回 YES 。否则返回 NO { assert(name != NULL); kinfo_proc *结果; size_t 计数 = 0;结果 = (kinfo_proc *)malloc(sizeof(kinfo_proc)); if(GetBSDProcessList(&result,&count) == 0) { for(int i = 0; i kp_proc.p_comm) == 0) { free(result);返回真; } } } 免费(结果);返回假; }
【解决方案3】:

也许

ps -eaf

从控制台

【讨论】:

  • 不,不是来自相同的控制台