c/c++语言开发共享如何从Solaris系统以C / C ++编程方式获取进程信息?

是否有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

      (0)
      上一篇 2021年2月4日
      下一篇 2021年2月4日

      精彩推荐