以编程方式获取另一个进程的父进程号?
- 2024-10-28 08:37:00
- admin 原创
- 51
问题描述:
我尝试了谷歌,但发现它获取了当前getppid()
进程的父 pid 。
我需要类似的东西getppid(some_other_pid)
,有这样的东西吗?基本上获取某个进程的 pid 并返回父进程的 pid。
解决方案 1:
我认为最简单的事情就是打开“/proc”并解析其内容。
你会发现 ppid 是 /proc/pid/stat 的第四个参数
在 C 语言中,libproc 有一个get_proc_stats
用于解析该文件的函数:请参阅给定一个子 PID,如何获取父 PID作为示例。
解决方案 2:
或者你可以尝试使用 unix shellps -p <child_pid> -o ppid=
解决方案 3:
我已经迟到了7年了,但是对于任何可能偶然发现这个问题的人来说,这里是OS X上的替代解决方案。这里发布的其他答案是正确的,sysctl()
可以完成工作,但您也可以使用它proc_pidinfo
来获取有关流程的大量有用信息。
#include <libproc.h>
int getppid(const pid_t pid)
{
proc_bsdinfo info;
proc_pidinfo(pid, PROC_PIDTBSDINFO, 0, &info, sizeof(info));
return info.pbi_ppid;
}
显然,需要额外的错误检查。
解决方案 4:
您可以查看sysctl()
系统调用和此链接。
解决方案 5:
还有一种方法可以从 proc 条目中获取它:
cat /proc/<pid>/status | grep PPid:
解决方案 6:
我们也可以使用pstree
命令。
pstree -p -s <pid of the process>
pstree -s
给出所有祖先的树。添加-p
还会给出 pid。
示例:假设有一个进程 pid=6206。使用pstree
命令
pstree -p -s 6206
您将获得进程树。
systemd(1)───lightdm(1066)───lightdm(1191)───upstart(1360)───gnome-terminal-(5222)───bash(5229)───cpu-print(6206)
这里的父 PID 是 5229
解决方案 7:
使用纯 C 语言和标准库来编写这个程序的简单方法:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXBUF (BUFSIZ * 2)
int pgetppid(int pid) {
int ppid;
char buf[MAXBUF];
char procname[32]; // Holds /proc/4294967296/status
FILE *fp;
snprintf(procname, sizeof(procname), "/proc/%u/status", pid);
fp = fopen(procname, "r");
if (fp != NULL) {
size_t ret = fread(buf, sizeof(char), MAXBUF-1, fp);
if (!ret) {
return 0;
} else {
buf[ret++] = ' '; // Terminate it.
}
}
fclose(fp);
char *ppid_loc = strstr(buf, "
PPid:");
if (ppid_loc) {
ppid = sscanf(ppid_loc, "
PPid:%d", &ppid);
if (!ppid || ppid == EOF) {
return 0;
}
return ppid;
} else {
return 0;
}
}
int main () {
int ppid, pid = 373; // my current cron pid
ppid = pgetppid(pid);
printf("PPid = %d
", ppid);
}
解决方案 8:
就我而言,在终端中运行的进程的父 PID:
ps | grep -E -m 1 -o "[0-9]{4,}"
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD