getppid() 系统调用在 Linux 系统中用于获取当前进程的父进程 ID。 然而,标准的 getppid() 函数并不能直接获取指定进程的父进程 ID。 上面的代码示例中,getppid(target_pid) 的用法是错误的。 getppid() 函数没有参数。
为了获取指定进程的父进程 ID,需要使用 /proc 文件系统。 以下是一个更正后的代码示例,它能够获取指定进程的父进程 ID:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <dirent.h> #include <string.h> int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "Usage: %s <pid> ", argv[0]); return 1; } pid_t target_pid = atoi(argv[1]); char path[256]; snprintf(path, sizeof(path), "/proc/%d/stat", target_pid); FILE *fp = fopen(path, "r"); if (fp == NULL) { perror("fopen"); return 1; } char buffer[1024]; fgets(buffer, sizeof(buffer), fp); fclose(fp); char *token = strtok(buffer, " "); for (int i = 0; i < 3; ++i) { token = strtok(NULL, " "); } pid_t parent_pid = atoi(token); printf("Parent process ID of PID %d is %d ", target_pid, parent_pid); return 0; }
这个程序通过读取 /proc//stat 文件来获取进程信息。 该文件包含进程的各种信息,包括父进程 ID。 程序解析该文件,提取并打印父进程 ID。
编译和运行方法与之前相同:
gcc getppid_parent.c -o getppid_parent ./getppid_parent <pid>
请记住,只有具有足够权限的用户才能访问 /proc 文件系统中的信息。
以上就是linux getppid能否获取指定进程id的详细内容,更多请关注启程网【www.vszh.cn】。
猜您喜欢
-
linux getppid如何获取父进程id
在Linux系统中,获取当前进程父进程ID的方法非常简单,只需使用getppid()函数即可。 以下是一个简单的C语言示例代码: #include <stdio.h> #include <unistd.h> int main() { pid_t ppid; ppid = getppid(); ···
-
linux nohup日志在多进程下的情况
在Linux系统中,多个进程同时使用nohup命令时,所有输出默认都写入nohup.out文件,导致日志内容混杂,难以解析。 本文提供几种方法解决此问题,确保日志清晰易读。 方法一:使用>>追加输出 避免日志文件被覆盖,是解决日志混···
-
怎么查自己windows产品密钥 windows激活码怎么获取
如何查看 windows 系统激活码?了解您的 windows 激活码至关重要,因为它可用于重新安装或激活系统。php小编鱼仔将在本文中详细介绍如何在 windows 系列中查找您的产品密钥。在继续阅读本文之前,请确保您拥有管理员权限。 1.同时按下···
-
qq音乐怎么转换mp3格式 qq音乐会员永久免费获取方法
qq音乐:畅享海量音乐,轻松转换mp3格式及会员使用技巧 QQ音乐拥有庞大的音乐库和众多用户,提供会员免费试听等多种服务。本文将指导您如何转换音乐格式、获取会员试用以及设置后台播放。 一、QQ音乐歌曲转换为MP3格式 您可以通过以···
-
diskgenius怎么恢复指定类型文件?-diskgenius恢复指定类型文件的方法
diskgenius数据恢复:如何快速恢复特定类型文件?本文将指导您使用diskgenius软件高效恢复指定类型文件,例如图片、文档等。 步骤一:启动文件类型恢复功能 打开DiskGenius软件,点击“工具”菜单,然后选择“恢复指定类型的文件”。 步···
-
edge怎么关闭进程-edge关闭进程的方法
edge浏览器集成了强大的学习辅助功能,例如沉浸式阅读器,有效提升阅读效率。 edge支持跨平台数据同步(windows、macos、ios、android),方便用户在不同设备间无缝切换使用。 本文将指导您如何关闭edge浏览器进程。 第一步 打开Edg···