linux getppid能否获取指定进程id

电脑数码

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 getppid如何获取父进程id

    在Linux系统中,获取当前进程父进程ID的方法非常简单,只需使用getppid()函数即可。 以下是一个简单的C语言示例代码: #include <stdio.h> #include <unistd.h> int main() { pid_t ppid; ppid = getppid(); ···

  • linux nohup日志在多进程下的情况

    linux nohup日志在多进程下的情况

    在Linux系统中,多个进程同时使用nohup命令时,所有输出默认都写入nohup.out文件,导致日志内容混杂,难以解析。 本文提供几种方法解决此问题,确保日志清晰易读。 方法一:使用>>追加输出 避免日志文件被覆盖,是解决日志混···

  • 怎么查自己windows产品密钥 windows激活码怎么获取

    怎么查自己windows产品密钥 windows激活码怎么获取

    如何查看 windows 系统激活码?了解您的 windows 激活码至关重要,因为它可用于重新安装或激活系统。php小编鱼仔将在本文中详细介绍如何在 windows 系列中查找您的产品密钥。在继续阅读本文之前,请确保您拥有管理员权限。 1.同时按下···

  • qq音乐怎么转换mp3格式 qq音乐会员永久免费获取方法

    qq音乐怎么转换mp3格式 qq音乐会员永久免费获取方法

    qq音乐:畅享海量音乐,轻松转换mp3格式及会员使用技巧 QQ音乐拥有庞大的音乐库和众多用户,提供会员免费试听等多种服务。本文将指导您如何转换音乐格式、获取会员试用以及设置后台播放。 一、QQ音乐歌曲转换为MP3格式 您可以通过以···

  • diskgenius怎么恢复指定类型文件?-diskgenius恢复指定类型文件的方法

    diskgenius怎么恢复指定类型文件?-diskgenius恢复指定类型文件的方法

    diskgenius数据恢复:如何快速恢复特定类型文件?本文将指导您使用diskgenius软件高效恢复指定类型文件,例如图片、文档等。 步骤一:启动文件类型恢复功能 打开DiskGenius软件,点击“工具”菜单,然后选择“恢复指定类型的文件”。 步···

  • edge怎么关闭进程-edge关闭进程的方法

    edge怎么关闭进程-edge关闭进程的方法

    edge浏览器集成了强大的学习辅助功能,例如沉浸式阅读器,有效提升阅读效率。 edge支持跨平台数据同步(windows、macos、ios、android),方便用户在不同设备间无缝切换使用。 本文将指导您如何关闭edge浏览器进程。 第一步 打开Edg···