zoukankan      html  css  js  c++  java
  • sigar 函数

    大家好,我是Sigar。也许好多人还不认识我。下面就介绍一下我自己,好让大家对我有一个大致的了解。

    我的全名是System Information Gatherer And Reporter,中文名是系统信息收集和报表工具。我是一个开源的工具,提供了跨平台的系统信息收集的API,我可以收集的信息包括:

    1.操作系统的信息,包括:dataModel、cpuEndian、name、version、arch、machine、description、patchLevel、vendor、vendorVersion、vendorName、vendorCodeName

    2.CPU信息,包括:基本信息(vendor、model、mhz、cacheSize)和统计信息(user、sys、idle、nice、wait)

    3.内存信息,物理内存和交换内存的总数、使用数、剩余数;RAM的大小

    4.进程信息,包括每个进程的内存、CPU占用数、状态、参数、句柄等。

    5.文件系统信息,包括名称、容量、剩余数、使用数、分区类型等

    6.网络接口信息,包括基本信息和统计信息。

    7.网络路由和链接表信息。

    哈哈,够全了吧。另外我的性格比较外向,可以和绝大多数操作系统和大多数版本打交道。
    当然了我的底层接口是用C语言写的。

    SIGAR_DECLARE(int) sigar_open(sigar_t **sigar);//打开连接
    SIGAR_DECLARE(int) sigar_close(sigar_t *sigar);//关闭连接

    SIGAR_DECLARE(sigar_pid_t) sigar_pid_get(sigar_t *sigar);//获取当前运行程序的id ,在此程序中就是sigar_test


    SIGAR_DECLARE(int) sigar_proc_kill(sigar_pid_t pid, int signum); //杀死进程,signum为sigar_signum_get(char *name);的返回值,pid为进程号
    SIGAR_DECLARE(int) sigar_signum_get(char *name); //name为KILL,


    SIGAR_DECLARE(char *) sigar_strerror(sigar_t *sigar, int err); err:1 operation not permitted //操作不允许 一般是权限问题
    2 No such file or directory
    3 No such process
    4 Interrupted system call //系统调用中断
    5 Input/output error
    6 No such device or address
    7 Argument list too long //参数列表太长
    8 Exec format error
    等等。

    SIGAR_DECLARE(int) sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem);//获取系统内存

    SIGAR_DECLARE(int) sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap);//获取交换区内存

    SIGAR_DECLARE(int) sigar_cpu_get(sigar_t *sigar, sigar_cpu_t *cpu);获取系统cpu

    SIGAR_DECLARE(int) sigar_cpu_list_get(sigar_t *sigar, sigar_cpu_list_t *cpulist);//获取系统cpu列表

    SIGAR_DECLARE(int) sigar_cpu_list_destroy(sigar_t *sigar,
    sigar_cpu_list_t *cpulist);//销毁上次获取到的系统cpu列表

    SIGAR_DECLARE(int)
    sigar_cpu_info_list_get(sigar_t *sigar,
    sigar_cpu_info_list_t *cpu_infos); //获取系统cpu信息列表

    SIGAR_DECLARE(int)
    sigar_cpu_info_list_destroy(sigar_t *sigar,
    sigar_cpu_info_list_t *cpu_infos);//销毁上次获取到的系统cpu信息列表

    SIGAR_DECLARE(int) sigar_uptime_get(sigar_t *sigar,
    sigar_uptime_t *uptime); //系统运行时间


    SIGAR_DECLARE(int) sigar_loadavg_get(sigar_t *sigar,
    sigar_loadavg_t *loadavg);//平均负载,1分钟,5分钟,15分钟的 等同于linux中的uptime或w命令


    SIGAR_DECLARE(int) sigar_resource_limit_get(sigar_t *sigar,
    sigar_resource_limit_t *rlimit);//资源限值 cpu file pipe data stack core memory processes openfile virtual_memory

    SIGAR_DECLARE(int) sigar_proc_list_get(sigar_t *sigar,
    sigar_proc_list_t *proclist);// 系统进程列表

    SIGAR_DECLARE(int) sigar_proc_list_destroy(sigar_t *sigar,
    sigar_proc_list_t *proclist);销毁上次获取的系统进程列表

    SIGAR_DECLARE(int) sigar_proc_stat_get(sigar_t *sigar,
    sigar_proc_stat_t *procstat);//获取系统进程状态 包括线程数量,进程数量,运行数量,sleep数量等

    SIGAR_DECLARE(int) sigar_proc_mem_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_mem_t *procmem);//获取指定进程的内存信息

    SIGAR_DECLARE(int) sigar_proc_disk_io_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_disk_io_t *proc_disk_io);//获取指定进程的磁盘读写信息

    SIGAR_DECLARE(int) sigar_proc_cumulative_disk_io_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_cumulative_disk_io_t *proc_cumulative_disk_io);//获取指定进程累积的磁盘读写信息

    SIGAR_DECLARE(int) sigar_dump_pid_cache_get(sigar_t *sigar, sigar_dump_pid_cache_t *info);//获取指定进程的缓存

    SIGAR_DECLARE(int) sigar_proc_cred_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_cred_t *proccred); ///得到的均为0 不晓得为什么

    SIGAR_DECLARE(int)
    sigar_proc_cred_name_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_cred_name_t *proccredname);//获取此进程的用户和用户组

    SIGAR_DECLARE(int) sigar_proc_time_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_time_t *proctime);//获取指定进程的时间信息

    SIGAR_DECLARE(int) sigar_proc_cpu_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_cpu_t *proccpu);//获取指定进程的cpu信息————————————————————

    SIGAR_DECLARE(int) sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_state_t *procstate);//获取指定进程的基本信息

    SIGAR_DECLARE(int) sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_args_t *procargs);//获取指定进程的进程启动名格式 例如: ./sys_node_mng

    SIGAR_DECLARE(int) sigar_proc_args_destroy(sigar_t *sigar,
    sigar_proc_args_t *procargs);//销毁上面去到的内容

    SIGAR_DECLARE(int) sigar_proc_env_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_env_t *procenv);//看不懂????

    SIGAR_DECLARE(int) sigar_proc_fd_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_fd_t *procfd);//获取指定进程开开的文件数

    SIGAR_DECLARE(int) sigar_proc_exe_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_exe_t *procexe);//获取指定进程的运行路径

    SIGAR_DECLARE(int) sigar_proc_modules_get(sigar_t *sigar, sigar_pid_t pid,
    sigar_proc_modules_t *procmods);//什么鬼玩意 看不懂


    SIGAR_DECLARE(int) sigar_thread_cpu_get(sigar_t *sigar,
    sigar_uint64_t id,
    sigar_thread_cpu_t *cpu);//应该是获取指定进程的线程的cpu信息,但是搞不懂为啥都是0.(有可能时因为这个线程在睡眠或者其他)

    SIGAR_DECLARE(int)
    sigar_file_system_list_get(sigar_t *sigar,
    sigar_file_system_list_t *fslist);//获取文件系统列表
    SIGAR_DECLARE(int)
    sigar_file_system_list_destroy(sigar_t *sigar,
    sigar_file_system_list_t *fslist);//摧毁上面获得的文件系统信息

    #undef SIGAR_DISK_USAGE_T

    SIGAR_DECLARE(int)
    sigar_file_system_usage_get(sigar_t *sigar,
    const char *dirname,
    sigar_file_system_usage_t *fsusage);//获取文件系统指定的目录名的用法

    SIGAR_DECLARE(int) sigar_disk_usage_get(sigar_t *sigar,
    const char *name,
    sigar_disk_usage_t *disk); //获取指定的磁盘(名为name)用法

    SIGAR_DECLARE(int)
    sigar_file_system_ping(sigar_t *sigar,
    sigar_file_system_t *fs); //获取系统目录信息???? 好像没作用,获取的都是空

    SIGAR_DECLARE(int)
    sigar_net_info_get(sigar_t *sigar,
    sigar_net_info_t *netinfo);// 获取网络信息(包括主机名,dns等)

    SIGAR_DECLARE(int) sigar_net_route_list_get(sigar_t *sigar,
    sigar_net_route_list_t *routelist);//网络线路清单

    SIGAR_DECLARE(int) sigar_net_route_list_destroy(sigar_t *sigar,
    sigar_net_route_list_t *routelist);//清除上面获得的信息

    SIGAR_DECLARE(int)
    sigar_net_connection_list_get(sigar_t *sigar,
    sigar_net_connection_list_t *connlist,
    int flags);//网络连接列表SIGAR_DECLARE(int)
    sigar_net_connection_list_destroy(sigar_t *sigar,
    sigar_net_connection_list_t *connlist);//摧毁上面获取的信息

    不为其他,只为快乐!
  • 相关阅读:
    洛谷 P5564: [Celeste-B]Say Goodbye
    LOJ 3185: 「CEOI2018」斐波那契表示法
    Codeforces 749E: Inversions After Shuffle
    C#之在treeview中鼠标点击的所选的节点触发事件
    C#中选中指定文件并读取类似ini文件的内容
    免费的EmBitz可替代Keil MDK开发STM32、NXP项目
    C#创建子线程,子线程使用委托更新控件
    C#调用C++生成的动态链接库DLL
    C#之菜单控件、主窗体打开子窗体、GroupBox控件使用
    在Linux下用CANopenSocket协议模拟CAN总线通讯
  • 原文地址:https://www.cnblogs.com/1521299249study/p/11174162.html
Copyright © 2011-2022 走看看