簡體   English   中英

從 C 中的特定 pid 獲取 PPid

[英]Get PPid from specific pid in C

我想找到一種方法來僅使用 C 低級 function 來獲取特定 pid 的 ppid。 我知道 bash 命令有一種方法,比如“ps”等,但我只想用 C 語言來做。

這應該可以按您的預期工作。 我使用了 pid = 373 ,這是我當前的/usr/sbin/cron 它正確報告 PPID 為 1 (init):

% ./getppid
PPid = 1

示例代碼:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXBUF      (BUFSIZ * 2)

int main () {
    int ppid, pid = 373;  // my current cron pid
    char buf[MAXBUF];
    char procname[32];  // Holds /proc/4294967296/status\0
    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) {
            perror("Error reading file: ");
            exit(1);
        } else {
            buf[ret++] = '\0';  // Terminate it.
        }
    }
    fclose(fp);
    char *ppid_loc = strstr(buf, "\nPPid:");
    if (ppid_loc) {
        ppid = sscanf(ppid_loc, "\nPPid:%d", &ppid);
        if (!ppid || ppid == EOF) {
            perror("scanf:");
            exit(1);
        }
        printf("PPid = %d\n", ppid);
    } else {
        printf("Error finding PPid: in status\n");
        exit(1);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM