如何在Mac OSX C 中找到任何过程的PID

How to find the PID of any process in Mac OSX C++

本文关键字:任何 过程 PID Mac OSX      更新时间:2023-10-16

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

您可以与proc_pidinfo结合使用proc_listpids

#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;
}