gpt4 book ai didi

c - 读取proc stat信息

转载 作者:行者123 更新时间:2023-12-03 05:11:31 26 4
gpt4 key购买 nike

您好,我需要有关具有某些 PID 的进程的以下信息:

名称、ppid、状态、#ofOpenFiles、#ofThreads

我知道/proc/pid/stat 文件的示例如下:

15 (watchdog/1) S 2 0 0 0 -1 69239104 0 0 0 0 0 69 0 0 -100 0 1 0 6 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744073709551615 0 0 17 1 99 1 0 0 0 0 0 0 0 0 0 0 0

我当前尝试解析此类文件:

FILE *fp;
char buff[255];
fp= fopen("/proc/123/stat", "r");
if(fp == NULL){

}else{

fscanf(fp, "%d %s %c %d %d %d %d %d %u %lu ....", &pid, &name, &ppid......)
fclose(fp);
}

我没有发现这个很好的方法。如何做到这一点?

最佳答案

您描述的解决方案看起来不错(特别是使用 @kaylum 的 * 格式说明符的想法)。请注意,您可以多次使用同一变量来忽略参数:

fscanf(fp, "%d %s %c %d %d %d %d %d %u %lu ...", &pid, &name, &ppid, &dummy, &dummy, &dummy, ...);

您还可以查看strtok按标记读取每一行“标记”。您可以使用它创建一个返回 char* 数组的函数,如 this other question 中所示。并获取第 i 个元素(进行所有正确的 NULL 和大小检查)。

编辑:如果文件名包含空格,那么您必须使用正则表达式或手动解析字符串,例如strtok() 检测正确的格式。

关于c - 读取proc stat信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34575285/

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