系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。Proc文件系统的名字就是由之而起。进程目录的结构如下:
目录名称 |
目录内容 |
Cmdline |
命令行参数 |
Environ |
环境变量值 |
Fd |
一个包含所有文件描述符的目录 |
Mem |
进程的内存被利用情况 |
Stat |
进程状态 |
Status |
进程当前状态,以可读的方式显示出来 |
Cwd |
当前工作目录的链接 |
Exe |
指向该进程的执行命令文件 |
Maps |
内存映象 |
Statm |
进程内存状态信息 |
Root |
链接此进程的root目录 |
通过读取该目录下不同文件的信息,可以获得进程运行的各项参数。
利用proc目录操作获取某个进程运行时占用的内存的例子:
- int get_memory_used(pid_t pid){
-
FILE *pfp;
-
char tmpstr[32];
-
sprintf(tmpstr,"/proc/%d/statm",pid);
-
pfp=fopen(tmpstr,"r");
-
if(pfp==NULL)
-
{
-
-
perror("get momey info error\n");
-
return -1;
-
}
-
int mem_used;
-
fscanf(pfp,"%d",&mem_used);
-
return mem_used;
- }