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

时间:2015-09-18 15:13:40

标签: linux system-calls

是否有定义的结构来获取特定进程的此文件的每个字段而不是解析文件?

1 个答案:

答案 0 :(得分:5)

创建/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版本,可以使用proc(5)

中描述的词法更简单的statstatm