📄 getcpu.cxx
字号:
#include <sys/param.h>#include <sys/pstat.h>#include <stdlib.h>#include <unistd.h>int main(){ struct pst_dynamic psd; struct pst_processor *psp,*psp_last; float cpu_iddle; _T_ULONG_T temp_iddle,temp_user,temp_sys; if (pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0) == -1) { perror("pstat_getdynamic error!"); return -1; } size_t nspu = psd.psd_proc_cnt; psp = (struct pst_processor *) malloc(nspu * sizeof(struct pst_processor)); psp_last = (struct pst_processor *) malloc(nspu * sizeof(struct pst_processor)); ////////////////// if (pstat_getprocessor(psp_last, sizeof(struct pst_processor), nspu, 0) == -1) perror("pstat_getdynamic"); sleep(2); for(;;) { if (pstat_getprocessor(psp, sizeof(struct pst_processor), nspu, 0) != -1) { int i; cpu_iddle=0; for (i = 0; i < nspu; i++) { temp_iddle=labs(psp[i].psp_idlecycles.psc_lo-psp_last[i].psp_idlecycles.psc_lo); temp_user=labs(psp[i].psp_usercycles.psc_lo-psp_last[i].psp_usercycles.psc_lo); temp_sys=labs(psp[i].psp_systemcycles.psc_lo-psp_last[i].psp_systemcycles.psc_lo); //iddle[i]=(float)temp_iddle/(float)(temp_iddle+temp_user+temp_sys); cpu_iddle+=(float)temp_iddle/(float)(temp_iddle+temp_user+temp_sys); psp_last[i].psp_idlecycles.psc_lo=psp[i].psp_idlecycles.psc_lo; psp_last[i].psp_usercycles.psc_lo=psp[i].psp_usercycles.psc_lo; psp_last[i].psp_systemcycles.psc_lo=psp[i].psp_systemcycles.psc_lo; } printf("cpu iddle is %4.2f\n",cpu_iddle*100/nspu); } else perror("pstat_getdynamic"); sleep(2); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -