qiaoer5201314 2014-11-07 10:46 采纳率: 0%
浏览 683

linux方面遇到的一个难题,希望大哥大姐帮忙解决下,小弟是菜鸟,刚学linux编程

/proc/进程号/statm包含了进程使用内存的信息,如[root@cs 9519]# more statm 18095 2094 1468 7 0 605 0 [root@cs 9519]# ps 9519PID TTY STAT TIME COMMAND9519 ? S 0:00 /usr/libexec/notification-daemonmore statm 18095 2094 1468 7 0 605 0编写一个程序,按上述方式加上文字说明信息,解释你的shell进程的内存统计信息。提示:打开文件/proc/进程号/statm?读文件到一个如500字节的缓冲区?将此缓冲区的文本用sscanf函数读取到7个整型变量中,然后加上文字说明信息,打印这些变量?关闭文件

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 01:50
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
        int pid, stat, bytes;
        char buf[500];
        FILE *f;
    
        // 打开指定的文件
        f = fopen("/proc/" PRIO "/statm", "r");
        if (f == NULL) {
            perror("无法打开文件");
            exit(1);
        }
    
        // 从文件中读取第一个行的内容(即pid)
        fgets(buf, sizeof(buf), f);
    
        // 使用sscanf函数将字符串转换为整数
        sscanf(buf, "%d %d %d %d %d %d %d", &pid, &stat, &bytes, &bytes, &bytes, &bytes, &bytes);
    
        printf("进程ID: %d\n", pid);
        printf("系统状态: %d\n", stat);
        printf("已使用的内存大小: %ldB\n", bytes);
    
        fclose(f);
    
        return 0;
    }
    

    这段代码首先打开了"/proc/进程号/statm"文件,并将文件内容读入一个缓冲区。然后使用sscanf函数将字符串转换为整数,并将其与pid、stat、bytes和bytes一起打印出来。最后,关闭文件并返回0。

    评论

报告相同问题?