如何在Mac OSX C+中查找任何进程的PID+; 我需要在C++ Mac OSX上找到某个程序的PID,并将其保存为变量。我一直在寻找这个问题的答案有一段时间了,但我找不到一个详细的答案,或者一个有效的答案。如果有人对此有想法,请回复。 谢谢

如何在Mac OSX C+中查找任何进程的PID+; 我需要在C++ Mac OSX上找到某个程序的PID,并将其保存为变量。我一直在寻找这个问题的答案有一段时间了,但我找不到一个详细的答案,或者一个有效的答案。如果有人对此有想法,请回复。 谢谢,c++,macos,pid,C++,Macos,Pid,您可以将proc_-listpids与proc_-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

您可以将
proc_-listpids
proc_-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;
}
#包括
#包括
#包括
void find_pids(常量字符*名称)
{
pid_t pid[2048];
int bytes=proc_listpids(proc_ALL_PIDS,0,PIDS,sizeof(PIDS));
int n_proc=bytes/sizeof(pids[0]);
for(int i=0;i
在终端中尝试
ps-aef
。然后选择一个过程并尝试查找,例如
pgrep coreaudoid
pgrep USBAgent
。然后考虑使用<代码> PONEN()/Cux>从C++程序中执行同样的操作。我认为这不适用。我用它来修改,而不是输出。老实说,我只是想知道如何在我进入到其他东西之前用C++找到PID。它怎么不适用?如果要查找进程“fred”的
processid
,请在终端中运行
pgrep fred
,它肯定会打印
processid
?在C++程序中,您完全一样,然后使用<代码> popen(“/Ur/bin /PGRIP弗莱德”)<代码>读取该数字。我使用POPON查找进程ID,在一些罕见的场合,在Mac OS大瑟尔和Calalina,我发现它在这上面停留了10分钟。为什么会这样?有什么方法可以避免这种情况,或者为其添加一些超时值?如果程序正在运行,也可以很容易地修改此代码以返回布尔值。我用这段代码检查程序是否正在运行。