如何获取/proc/[pid]/status的信息

8

是否有一种定义好的结构,可以获取特定进程的文件中每个字段而不是解析文件?


1
也许是 libprocps - gavv
1
https://gitlab.com/procps-ng/procps - gavv
1个回答

8

/proc/pid 伪文件系统的创建是为了让其他程序可以访问大量内核数据,而不必受到二进制结构的限制。而 /proc/pid/status 则旨在以更易于解析的格式提供 /proc/[pid]/stat 和 /proc/[pid]/statm 中的大部分信息。以下是一个示例:


$ cat /proc/$$/status
Name:   bash
State:  S (sleeping)
Tgid:   3515
Pid:    3515
PPid:   3452
...

这与更古老的机制形成对比,例如stat(2),需要类似二进制结构的东西。

struct stat {
    dev_t     st_dev;     /* ID of device containing file */
    ino_t     st_ino;     /* inode number */
    mode_t    st_mode;    /* protection */
    nlink_t   st_nlink;   /* number of hard links */
    uid_t     st_uid;     /* user ID of owner */
    gid_t     st_gid;     /* group ID of owner */
    dev_t     st_rdev;    /* device ID (if special file) */
    ...
};

如果您需要更易于机器读取的/proc/pid/status版本,可以使用词法更简单的statstatm,如proc(5)中所述。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接