是否有C / C ++库以及有关如何在Solaris上收集系统和进程信息的文档?
虽然我可以解析命令行工具,但我宁愿使用一个使任务更容易的库。
谢谢
编辑:有人建议使用/ proc虚拟目录来收集信息,但是它比解析命令行工具要好得多,因为我需要为每一段数据实现某种自定义解析需要。
我正在寻找一些针对Windows或MacOS的c库,通过基于c的系统API提供这些信息,但我对谷歌没有好运。
您可以使用kstat API获取此类信息。
man -s 3KSTAT kstat
您可以在OpenSolaris vmstat和iostat源中看到它的使用方式。
有关processus的信息,我会看看ps 。
Solaris具有/ proc虚拟目录 ,允许您使用文件系统I / Ofunction收集有关进程的各种信息。
我会像CrashWorks建议的那样使用/ proc virutal目录。 我在aux和linux上都做过这个。 要记住的一件事是当我在linux上使用/ proc目录时,文件的格式因内核而异。
我不知道Solaris方面的情况如何,但这可能意味着您的解决方案无法从一个solaris平台移植到另一个平台。
怎么样getrusage()
?
我肯定不是这个主题的专家,但是当我们被要求拍摄过程的快照时,我做了一个非常类似于上学期的作业。 不幸的是,这种方法需要挖掘内核,这可能不是你想要做的。
我发现这篇文章很有帮助。
无论如何这里有一些片段。
write_lock_irq(&tasklist_lock); for_each_process(task) { if (system_or_user == 0) print_mem_user(task); if (system_or_user == 1) print_mem_system(task); } write_unlock_irq(&tasklist_lock);
锁定某些数据结构或有时锁定内核所需的想法将会挂起。 “for_each_process”是在某处定义的宏,但我不记得它是如何工作的D:
static void print_mem_system(struct task_struct *task) { struct mm_struct *mm; if (task -> mm == NULL){ // this is how you distinguish system processes from user processes myarraypid[totalnumberofprocesses] = task -> pid; // store process id's into myarraypid[], which you can later copy back to user space for printing/display. Additional information would be found in a "task_struct" which is Linux's implementation of a process. } }
我的一些同学采用了不同的方法,潜入了“ps”实用程序的源头。 我相信我正在研究Linux 2.6.18-92.1.13.e15。 免责声明:这对我有用,但您的里程可能会有所不同。 我很可能会离开墙,我不想让你走错方向。
以上就是c/c++开发分享如何从Solaris系统以C / C ++编程方式获取进程信息?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562257.html