gpt4 book ai didi

linux - linux中top命令的工作原理

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:41 25 4
gpt4 key购买 nike

我想了解linux中top命令的实现,即它如何使用procfs接口(interface)来显示顶级运行进程。我应该引用哪些来源。

最佳答案

首先,仔细阅读proc(5) 。然后研究procps的代码,并且,正如 tangrs 所评论的,共 unixtop ,即top-3.7.tar.gz

例如,您的程序可能会这样做

{ FILE* psf = fopen("/proc/self/statm", "r");
if (psf) {
int progsize = 0;
fscanf(psf, "%d", &progsize);
printf ("program size is %d pages\n", progsize);
fclose(psf);
} else perror("fopen /proc/self/statm");
}

打印自己的程序大小。你可以把它变成一个函数:

int get_my_program_size(void) {
int progsize = -1;
FILE* psf = fopen("/proc/self/statm", "r");
if (psf) {
fscanf(psf, "%d", &progsize);
fclose(psf);
} else perror("get_my_program_size /proc/self/statm");
return progsize;
}

这非常快:不涉及磁盘 I/O,因为 /proc/ 文件系统是一个伪文件系统,其文件内容是动态按需计算的。这些伪文件(如 /proc/1234/statm/proc/1234/status 等)应按顺序读取。

如果您想要用户模式 ​​CPU 时间,您可以解析 /proc/self/stat 的第 14th 字段 (utime)(对于 pid 1234 的进程,则解析 /proc/1234/stat)。我将其作为练习留给读者......

关于linux - linux中top命令的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24259460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com