c++ - 如何在 Mac OSX C++ 中查找任何进程的 PID

标签 c++ macos pid

我需要使用 C++ 在 Mac OSX 上找到某个程序的 PID,并将其保存为一个变量。一段时间以来,我一直在寻找这个问题的答案,但找不到详细的答案或有效的答案。如果有人对如何执行此操作有任何想法,请回复。 谢谢!

最佳答案

您可以将 proc_listpidsproc_pidinfo 结合使用:

#include <libproc.h>
#include <stdio.h>
#include <string.h>

void find_pids(const char *name)
{
    pid_t pids[2048];
    int bytes = proc_listpids(PROC_ALL_PIDS, 0, pids, sizeof(pids));
    int n_proc = bytes / sizeof(pids[0]);
    for (int i = 0; i < n_proc; i++) {
        struct proc_bsdinfo proc;
        int st = proc_pidinfo(pids[i], PROC_PIDTBSDINFO, 0,
                             &proc, PROC_PIDTBSDINFO_SIZE);
        if (st == PROC_PIDTBSDINFO_SIZE) {
            if (strcmp(name, proc.pbi_name) == 0) {
                /* Process PID */
                printf("%d [%s] [%s]\n", pids[i], proc.pbi_comm, proc.pbi_name);                
            }
        }       
    }
}


int main()
{
    find_pids("bash");
    return 0;
}

关于c++ - 如何在 Mac OSX C++ 中查找任何进程的 PID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49506579/

相关文章:

c++ - 为什么我可以在复制构造函数中访问私有(private)变量?

linux - 如何在 Linux 终端中显示 GUI 应用程序的窗口标题

macos - 构建并推送多拱 docker 镜像

python - 尝试在 Mac OS X Yosemite 上安装 MySQL-python 时出错

objective-c - 如何在特定位置将 NSWindow 显示为工作表

linux - 与 Linux 上的 pid 和进程混淆

linux - 长时间运行的进程远程终止?

c++ - 链接 : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use/NODEFAULTLIB:library

python - Raspberry Pi CEC 代码的 SWIG 产生 undefined symbol 错误

c++ - c++11线程引入了什么样的开销?