objective-c获取进程及其路径和参数的列表

objective-c获取进程及其路径和参数的列表,objective-c,macos,cocoa,process,Objective C,Macos,Cocoa,Process,获取进程列表及其路径非常容易 int numberOfProcesses = proc_listpids(PROC_ALL_PIDS, 0, NULL, 0); pid_t pids[1024]; bzero(pids, 1024); proc_listpids(PROC_ALL_PIDS, 0, pids, sizeof(pids)); for (int i = 0; i < numberOfProcesses; ++i) { if (pids[i] == 0) { co

获取进程列表及其路径非常容易

    int numberOfProcesses = proc_listpids(PROC_ALL_PIDS, 0, NULL, 0);
pid_t pids[1024];
bzero(pids, 1024);
proc_listpids(PROC_ALL_PIDS, 0, pids, sizeof(pids));
for (int i = 0; i < numberOfProcesses; ++i) {
    if (pids[i] == 0) { continue; }
    char pathBuffer[PROC_PIDPATHINFO_MAXSIZE];
    bzero(pathBuffer, PROC_PIDPATHINFO_MAXSIZE);
    proc_pidpath(pids[i], pathBuffer, sizeof(pathBuffer));

    char arguments[KERN_PROCARGS2];

    if (strlen(pathBuffer) > 0) {
        printf("path: %s\n", pathBuffer);
    }
}
int numberOfProcesses=proc_listpids(proc_ALL_PIDS,0,NULL,0);
pid_t pid[1024];
bzero(pids,1024);
proc_listpids(proc_ALL_PIDS,0,PIDS,sizeof(PIDS));
for(int i=0;i0){
printf(“路径:%s\n”,路径缓冲区);
}
}

但是,我也希望得到用于启动这些流程的任何参数。我似乎不知道该怎么做。有什么建议吗

指针?
ps
命令列出了它们,其源代码可作为苹果开源软件的一部分使用:

直接调用函数将比运行新任务更快

可以为Windows、MacOS、Linux和FreeBSD构建源代码

请随意借用您可能需要的代码的任何部分:


从安全角度来看,我当然希望不会!当我使用/bin/ps运行NSTask时,我得到的进程比运行上述代码时少得多,因此我不确定这是否是一个选项。ps源代码向您展示了如何获取进程参数,请在代码中使用算法。“ps-ax”是否真的会让您的列表比您的代码短?@Wesley也许当您运行
ps
命令时,您是从root提示符运行它的,而当使用代码时,它是在您当前用户ID的进程下运行的,只显示在文件用户角色中作为您列出的进程?只是一种预感。
./build64.sh # Build cmdline app for 64-bit Intel Mac
# Enumerate all processes running and print the argvs
./xproc --pid-enum | xargs -L1 ./xproc --cmd-from-pid