亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vmstat.c

?? linux下獲取一些環境信息的代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
// old: "Copyright 1994 by Henry Ware <al172@yfn.ysu.edu>. Copyleft same year."// most code copyright 2002 Albert Cahalan// // 27/05/2003 (Fabian Frederick) : Add unit conversion + interface//               	 Export proc/stat access to libproc//			 Adapt vmstat helpfile// 31/05/2003 (Fabian) : Add diskstat support (/libproc)// June 2003 (Fabian) : -S <x> -s & -s -S <x> patch// June 2003 (Fabian) : -Adding diskstat against 3.1.9, slabinfo//			 -patching 'header' in disk & slab// July 2003 (Fabian) : -Adding disk partition output//			-Adding disk table//			-Syncing help / usage#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <string.h>#include <assert.h>#include <fcntl.h>#include <limits.h>#include <termios.h>#include <unistd.h>#include <sys/types.h>#include <sys/ioctl.h>#include <sys/dir.h>#include <dirent.h>#include "proc/sysinfo.h"#include "proc/version.h"static unsigned long dataUnit=1024;static char szDataUnit [16];#define UNIT_B        1#define UNIT_k        1000#define UNIT_K        1024#define UNIT_m        1000000#define UNIT_M        1048576#define VMSTAT        0#define DISKSTAT      0x00000001#define VMSUMSTAT     0x00000002#define SLABSTAT      0x00000004#define PARTITIONSTAT 0x00000008#define DISKSUMSTAT   0x00000010static int statMode=VMSTAT;#define FALSE 0#define TRUE 1static int a_option; /* "-a" means "show active/inactive" */static unsigned sleep_time = 1;static unsigned long num_updates;static unsigned int height;   // window heightstatic unsigned int moreheaders=TRUE;/////////////////////////////////////////////////////////////////////////static void usage(void) NORETURN;static void usage(void) {  fprintf(stderr,"usage: vmstat [-V] [-n] [delay [count]]\n");  fprintf(stderr,"              -V prints version.\n");  fprintf(stderr,"              -n causes the headers not to be reprinted regularly.\n");  fprintf(stderr,"              -a print inactive/active page stats.\n");  fprintf(stderr,"              -d prints disk statistics\n");  fprintf(stderr,"              -D prints disk table\n");  fprintf(stderr,"              -p prints disk partition statistics\n");  fprintf(stderr,"              -s prints vm table\n");  fprintf(stderr,"              -m prints slabinfo\n");  fprintf(stderr,"              -S unit size\n");  fprintf(stderr,"              delay is the delay between updates in seconds. \n");  fprintf(stderr,"              unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)\n");  fprintf(stderr,"              count is the number of updates.\n");  exit(EXIT_FAILURE);}/////////////////////////////////////////////////////////////////////////////#if 0// produce:  "  6  ", "123  ", "123k ", etc.static int format_1024(unsigned long long val64, char *restrict dst){  unsigned oldval;  const char suffix[] = " kmgtpe";  unsigned level = 0;  unsigned val32;  if(val64 < 1000){   // special case to avoid "6.0  " when plain "  6  " would do    val32 = val64;    return sprintf(dst,"%3u  ",val32);  }  while(val64 > 0xffffffffull){    level++;    val64 /= 1024;  }  val32 = val64;  while(val32 > 999){    level++;    oldval = val32;    val32 /= 1024;  }  if(val32 < 10){    unsigned fract = (oldval % 1024) * 10 / 1024;    return sprintf(dst, "%u.%u%c ", val32, fract, suffix[level]);  }  return sprintf(dst, "%3u%c ", val32, suffix[level]);}// produce:  "  6  ", "123  ", "123k ", etc.static int format_1000(unsigned long long val64, char *restrict dst){  unsigned oldval;  const char suffix[] = " kmgtpe";  unsigned level = 0;  unsigned val32;  if(val64 < 1000){   // special case to avoid "6.0  " when plain "  6  " would do    val32 = val64;    return sprintf(dst,"%3u  ",val32);  }  while(val64 > 0xffffffffull){    level++;    val64 /= 1000;  }  val32 = val64;  while(val32 > 999){    level++;    oldval = val32;    val32 /= 1000;  }  if(val32 < 10){    unsigned fract = (oldval % 1000) / 100;    return sprintf(dst, "%u.%u%c ", val32, fract, suffix[level]);  }  return sprintf(dst, "%3u%c ", val32, suffix[level]);}#endif////////////////////////////////////////////////////////////////////////////static void new_header(void){  printf("procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----\n");  printf(    "%2s %2s %6s %6s %6s %6s %4s %4s %5s %5s %4s %4s %2s %2s %2s %2s\n",    "r","b",    "swpd", "free", a_option?"inact":"buff", a_option?"active":"cache",    "si","so",    "bi","bo",    "in","cs",    "us","sy","id","wa"  );}////////////////////////////////////////////////////////////////////////////static unsigned long unitConvert(unsigned int size){ float cvSize; cvSize=(float)size/dataUnit*((statMode==SLABSTAT)?1:1024); return ((unsigned long) cvSize);}////////////////////////////////////////////////////////////////////////////static void new_format(void) {  const char format[]="%2u %2u %6lu %6lu %6lu %6lu %4u %4u %5u %5u %4u %4u %2u %2u %2u %2u\n";  unsigned int tog=0; /* toggle switch for cleaner code */  unsigned int i;  unsigned int hz = Hertz;  unsigned int running,blocked,dummy_1,dummy_2;  jiff cpu_use[2], cpu_nic[2], cpu_sys[2], cpu_idl[2], cpu_iow[2], cpu_xxx[2], cpu_yyy[2], cpu_zzz[2];  jiff duse, dsys, didl, diow, dstl, Div, divo2;  unsigned long pgpgin[2], pgpgout[2], pswpin[2], pswpout[2];  unsigned int intr[2], ctxt[2];  unsigned int sleep_half;   unsigned long kb_per_page = sysconf(_SC_PAGESIZE) / 1024ul;  int debt = 0;  // handle idle ticks running backwards  sleep_half=(sleep_time/2);  new_header();  meminfo();  getstat(cpu_use,cpu_nic,cpu_sys,cpu_idl,cpu_iow,cpu_xxx,cpu_yyy,cpu_zzz,	  pgpgin,pgpgout,pswpin,pswpout,	  intr,ctxt,	  &running,&blocked,	  &dummy_1, &dummy_2);  duse= *cpu_use + *cpu_nic;   dsys= *cpu_sys + *cpu_xxx + *cpu_yyy;  didl= *cpu_idl;  diow= *cpu_iow;  dstl= *cpu_zzz;  Div= duse+dsys+didl+diow+dstl;  divo2= Div/2UL;  printf(format,	 running, blocked,	 unitConvert(kb_swap_used), unitConvert(kb_main_free),	 unitConvert(a_option?kb_inactive:kb_main_buffers),	 unitConvert(a_option?kb_active:kb_main_cached),	 (unsigned)( (*pswpin  * unitConvert(kb_per_page) * hz + divo2) / Div ),	 (unsigned)( (*pswpout * unitConvert(kb_per_page) * hz + divo2) / Div ),	 (unsigned)( (*pgpgin                * hz + divo2) / Div ),	 (unsigned)( (*pgpgout               * hz + divo2) / Div ),	 (unsigned)( (*intr                  * hz + divo2) / Div ),	 (unsigned)( (*ctxt                  * hz + divo2) / Div ),	 (unsigned)( (100*duse                    + divo2) / Div ),	 (unsigned)( (100*dsys                    + divo2) / Div ),	 (unsigned)( (100*didl                    + divo2) / Div ),	 (unsigned)( (100*diow                    + divo2) / Div ) /* ,	 (unsigned)( (100*dstl                    + divo2) / Div ) */  );  for(i=1;i<num_updates;i++) { /* \\\\\\\\\\\\\\\\\\\\ main loop ////////////////// */    sleep(sleep_time);    if (moreheaders && ((i%height)==0)) new_header();    tog= !tog;    meminfo();    getstat(cpu_use+tog,cpu_nic+tog,cpu_sys+tog,cpu_idl+tog,cpu_iow+tog,cpu_xxx+tog,cpu_yyy+tog,cpu_zzz+tog,	  pgpgin+tog,pgpgout+tog,pswpin+tog,pswpout+tog,	  intr+tog,ctxt+tog,	  &running,&blocked,	  &dummy_1,&dummy_2);    duse= cpu_use[tog]-cpu_use[!tog] + cpu_nic[tog]-cpu_nic[!tog];    dsys= cpu_sys[tog]-cpu_sys[!tog] + cpu_xxx[tog]-cpu_xxx[!tog] + cpu_yyy[tog]-cpu_yyy[!tog];    didl= cpu_idl[tog]-cpu_idl[!tog];    diow= cpu_iow[tog]-cpu_iow[!tog];    dstl= cpu_zzz[tog]-cpu_zzz[!tog];    /* idle can run backwards for a moment -- kernel "feature" */    if(debt){      didl = (int)didl + debt;      debt = 0;    }    if( (int)didl < 0 ){      debt = (int)didl;      didl = 0;    }    Div= duse+dsys+didl+diow+dstl;    divo2= Div/2UL;    printf(format,           running, blocked,	   unitConvert(kb_swap_used),unitConvert(kb_main_free),	   unitConvert(a_option?kb_inactive:kb_main_buffers),	   unitConvert(a_option?kb_active:kb_main_cached),	   (unsigned)( ( (pswpin [tog] - pswpin [!tog])*unitConvert(kb_per_page)+sleep_half )/sleep_time ), /*si*/	   (unsigned)( ( (pswpout[tog] - pswpout[!tog])*unitConvert(kb_per_page)+sleep_half )/sleep_time ), /*so*/	   (unsigned)( (  pgpgin [tog] - pgpgin [!tog]             +sleep_half )/sleep_time ), /*bi*/	   (unsigned)( (  pgpgout[tog] - pgpgout[!tog]             +sleep_half )/sleep_time ), /*bo*/	   (unsigned)( (  intr   [tog] - intr   [!tog]             +sleep_half )/sleep_time ), /*in*/	   (unsigned)( (  ctxt   [tog] - ctxt   [!tog]             +sleep_half )/sleep_time ), /*cs*/	   (unsigned)( (100*duse+divo2)/Div ), /*us*/	   (unsigned)( (100*dsys+divo2)/Div ), /*sy*/	   (unsigned)( (100*didl+divo2)/Div ), /*id*/	   (unsigned)( (100*diow+divo2)/Div )/*, //wa	   (unsigned)( (100*dstl+divo2)/Div )  //st  */    );  }}////////////////////////////////////////////////////////////////////////////static void diskpartition_header(const char *partition_name){  printf("%-10s %10s %10s %10s %10s\n",partition_name, "reads  ", "read sectors", "writes   ", "requested writes");}////////////////////////////////////////////////////////////////////////////static int diskpartition_format(const char* partition_name){    FILE *fDiskstat;    struct disk_stat *disks;    struct partition_stat *partitions, *current_partition=NULL;    unsigned long ndisks, j, k, npartitions;    const char format[] = "%20u %10llu %10u %10u\n";    fDiskstat=fopen("/proc/diskstats","rb");    if(!fDiskstat){        fprintf(stderr, "Your kernel doesn't support diskstat. (2.5.70 or above required)\n");         exit(0);    }    fclose(fDiskstat);    ndisks=getdiskstat(&disks,&partitions);    npartitions=getpartitions_num(disks, ndisks);    for(k=0; k<npartitions; k++){       if(!strcmp(partition_name, partitions[k].partition_name)){                current_partition=&(partitions[k]);        }	    }    if(!current_partition){         return -1;    }    diskpartition_header(partition_name);    printf (format,       current_partition->reads,current_partition->reads_sectors,current_partition->writes,current_partition->requested_writes);    fflush(stdout);    free(disks);    free(partitions);    for(j=1; j<num_updates; j++){         if (moreheaders && ((j%height)==0)) diskpartition_header(partition_name);        sleep(sleep_time);        ndisks=getdiskstat(&disks,&partitions);        npartitions=getpartitions_num(disks, ndisks);	current_partition=NULL;        for(k=0; k<npartitions; k++){          if(!strcmp(partition_name, partitions[k].partition_name)){                  current_partition=&(partitions[k]);           }	        }        if(!current_partition){           return -1;        }        printf (format,        current_partition->reads,current_partition->reads_sectors,current_partition->writes,current_partition->requested_writes);        fflush(stdout);        free(disks);        free(partitions);    }    return 0;}////////////////////////////////////////////////////////////////////////////static void diskheader(void){  printf("disk- ------------reads------------ ------------writes----------- -----IO------\n");  printf("%5s %6s %6s %7s %7s %6s %6s %7s %7s %6s %6s\n",         " ", "total", "merged","sectors","ms","total","merged","sectors","ms","cur","sec");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡视频在线观看| 亚洲亚洲精品在线观看| 激情偷乱视频一区二区三区| 欧美一区在线视频| 琪琪一区二区三区| 久久久久亚洲蜜桃| 懂色中文一区二区在线播放| 国产精品久久久久久久浪潮网站| 91在线视频免费观看| 一区二区三区四区蜜桃| 欧美丝袜自拍制服另类| 免费成人小视频| 久久久精品黄色| 91免费看片在线观看| 亚洲高清在线视频| 日韩三级中文字幕| 国产成人日日夜夜| 亚洲精品国产精品乱码不99 | 欧美精品久久99久久在免费线 | 国产精品每日更新在线播放网址| 91女人视频在线观看| 亚洲成a人片在线观看中文| 日韩精品一区二区三区老鸭窝| 国产精品乡下勾搭老头1| 亚洲色图视频网站| 91精品久久久久久久91蜜桃| 国产一区欧美日韩| 亚洲精品视频在线观看免费| 9191成人精品久久| 国产乱码精品一区二区三区av| 国产精品久久久久久久蜜臀| 91精品欧美福利在线观看| 国产成人av在线影院| 亚洲第一福利一区| 欧美国产日韩a欧美在线观看| 欧美午夜精品久久久久久超碰| 久久狠狠亚洲综合| 亚洲一区二区三区四区中文字幕| 久久久久久久久久久久电影| 色狠狠综合天天综合综合| 精品一区二区三区香蕉蜜桃 | 51精品视频一区二区三区| 国产麻豆精品一区二区| 亚洲午夜免费电影| 国产精品久久久久婷婷| 日韩一区二区精品| 色拍拍在线精品视频8848| 精品一区二区日韩| 亚洲影视资源网| 中文字幕不卡在线播放| 91精品国产手机| 99久久精品国产麻豆演员表| 亚洲成a人片在线观看中文| 亚洲日本在线观看| 欧美大片一区二区三区| 色偷偷88欧美精品久久久| 久久超级碰视频| 一区二区三区毛片| 中文字幕五月欧美| 精品久久国产老人久久综合| 色狠狠色噜噜噜综合网| 国产乱人伦偷精品视频免下载| 亚洲一区二区三区四区中文字幕 | 天天亚洲美女在线视频| 国产精品网站在线| 精品国产乱码久久久久久图片| 色av综合在线| 99免费精品视频| 韩国精品一区二区| 日韩激情一区二区| 一区二区三区在线免费| 精品久久久久久亚洲综合网 | 欧美群妇大交群的观看方式| 成人黄色在线视频| 狠狠色丁香久久婷婷综| 日韩av一区二区三区| 亚洲激情校园春色| 国产精品久久久久久久久晋中 | 久久久久国产精品厨房| 7777精品伊人久久久大香线蕉完整版 | 亚洲天堂免费在线观看视频| 欧美裸体一区二区三区| 91福利在线播放| 91在线视频在线| 91香蕉视频黄| 91在线精品一区二区三区| 大白屁股一区二区视频| 国产一区二区三区综合| 久久精品999| 精品亚洲porn| 免费观看日韩电影| 日韩精品1区2区3区| 亚洲123区在线观看| 一区二区三区四区av| 日韩理论片中文av| 亚洲人成伊人成综合网小说| 日韩一区欧美小说| 亚洲欧美韩国综合色| 亚洲桃色在线一区| 亚洲色图在线播放| 一个色在线综合| 亚洲午夜精品一区二区三区他趣| 亚洲午夜久久久久久久久电影网 | 91麻豆精品久久久久蜜臀| 欧美人妇做爰xxxⅹ性高电影| 欧美三级中文字幕| 欧美欧美午夜aⅴ在线观看| 欧美精品久久天天躁| 欧美一级欧美三级在线观看| 日韩一区二区三区免费观看| 欧美三日本三级三级在线播放| 欧美一区二区精美| 精品国产人成亚洲区| 国产日韩欧美a| 日韩毛片视频在线看| 午夜久久久久久| 日韩av午夜在线观看| 激情深爱一区二区| 国产成人免费视频网站高清观看视频| 成人av集中营| 欧美日韩国产一区二区三区地区| 欧美日韩不卡一区二区| 精品国产乱码久久久久久久 | 国产亚洲欧美激情| 亚洲天堂免费看| 天天av天天翘天天综合网| 久久国产精品免费| 99久久99精品久久久久久| 欧美军同video69gay| 欧美电视剧在线看免费| 最新久久zyz资源站| 自拍偷拍亚洲综合| 久久激情综合网| 色婷婷综合久色| 日韩欧美一级二级三级| 欧美激情一区二区三区全黄| 亚洲影视资源网| 国产成人aaa| 555夜色666亚洲国产免| 欧美国产禁国产网站cc| 亚洲一卡二卡三卡四卡| 麻豆成人久久精品二区三区红| 成人av在线网站| 日韩一区二区不卡| 亚洲女同ⅹxx女同tv| 国模大尺度一区二区三区| 色香色香欲天天天影视综合网| 久久综合国产精品| 亚洲成人久久影院| www.欧美色图| 精品福利一二区| 美女网站一区二区| 日本电影欧美片| 国产欧美视频在线观看| 日韩综合小视频| 色综合久久中文综合久久牛| 久久婷婷综合激情| 日韩国产欧美在线播放| 95精品视频在线| 欧美激情在线看| 国产在线麻豆精品观看| 在线不卡a资源高清| 亚洲人成人一区二区在线观看| 国产精品伊人色| 欧美mv和日韩mv的网站| 亚洲6080在线| 色视频一区二区| 国产精品午夜免费| 国产成人精品亚洲午夜麻豆| 欧美大黄免费观看| 日日摸夜夜添夜夜添亚洲女人| 一本一道久久a久久精品| 国产欧美精品一区二区三区四区| 蜜桃av一区二区三区电影| 欧美情侣在线播放| 亚洲一级片在线观看| 欧美亚洲自拍偷拍| 亚洲视频小说图片| 欧美性感一区二区三区| 亚洲一区在线免费观看| 91麻豆国产福利在线观看| 国产精品成人网| 99久久精品免费| 成人欧美一区二区三区| av激情综合网| 久久久久高清精品| av在线不卡电影| 中文字幕一区二区在线观看| av不卡在线播放| 最新国产成人在线观看| 91丨九色丨黑人外教| 亚洲欧美日韩久久| 色哟哟精品一区| 国产精品久久久久久久久果冻传媒| 91麻豆精品秘密| 午夜亚洲福利老司机| 日韩一区二区电影网| 国产自产视频一区二区三区| 久久久精品国产免大香伊| 豆国产96在线|亚洲|