我试过谷歌,但发现getppid()哪个获得当前进程的父pid .
我需要类似的东西getppid(some_other_pid),有这样的东西吗?基本上取一些进程的pid并返回父进程'pid.
给定一个pid,我想找到该进程的所有者(作为uid)。有没有办法使用C ++在osx(或任何unix)中得到它?
Google没有帮助。'ps'可以做到;所以我认为应该有一种以编程方式获取它的方法。
我需要获取一些有关在Mac OSX上运行进程的信息(PID,UID,GID,进程名称)。我试过了proc_pidinfo。对于我自己的流程,它可以正常工作。但是,对于其他用户拥有的进程,将返回0。没有此功能的文档,但是根据Internet上的信息,应该返回写入提供的缓冲区的字节数。在其他用户的进程上调用此函数将返回0,这意味着未提供任何信息。
例:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <libproc.h>
int main(int argc, char *argv[])
{
pid_t pid;
struct proc_bsdinfo proc;
if (argc == 2)
pid = atoi(argv[1]);
else
pid = getpid();
int st = proc_pidinfo(pid, PROC_PIDTBSDINFO, 0,
&proc, PROC_PIDTBSDINFO_SIZE);
if (st != PROC_PIDTBSDINFO_SIZE) {
fprintf(stderr, "Cannot get process info");
return 1;
}
printf(" pid: %d\n", (int)proc.pbi_pid);
printf("ppid: %d\n", (int)proc.pbi_ppid);
printf("comm: %s\n", proc.pbi_comm);
printf("name: %s\n", proc.pbi_name);
printf(" uid: %d\n", (int)proc.pbi_uid);
printf(" gid: %d\n", (int)proc.pbi_gid);
return …Run Code Online (Sandbox Code Playgroud)