www.pudn.com > getswapinfo.rar > getswapinfo.c



#include 
#include 
#include 
#include 

#ifdef __ia64__
#define USE_EFI
#endif /* __ia64__ */

#include "getswapinfo.h"

#define GET_SWAPIO_VMSTAT_CMD  "vmstat | sed -n 3p"

//全局网络连接信息结构体
SWAP_IO_Info g_swapio_info;


//读取swapio的信息
int getswapioInfo(void)
{
    FILE *pFile  = NULL;
    char buf[256];
    char number[32];
    char *pFind;
    pFile = popen(GET_SWAPIO_VMSTAT_CMD , "r");

    if (!pFile)
    {
        return -1;
    }
    g_swapio_info.free = 0;
    g_swapio_info.buff = 0;
    g_swapio_info.cache = 0;
    g_swapio_info.si = 0;
    g_swapio_info.so = 0;
    g_swapio_info.bi = 0;
    g_swapio_info.bo = 0;
    while(!feof(pFile))
    {       
        bzero(buf,sizeof(buf));
        if (!(fgets(buf, sizeof(buf), pFile)))
            break;  
        //读取值.
        printf("cmd=%s \n%s\n",GET_SWAPIO_VMSTAT_CMD, buf);
        int i=0;
        int j=0;
        char c = 0;
        int index = 0;
        bzero(number,sizeof(number));
        while((c=buf[i++])!=0)
        {               
            if(c>='0' && c<='9')
            {
                number[j++]=c;
            }
            else
            {
                //读取完成一个数据出来啦.
                if(number[0]>0)
                {                   
                    //printf("---number[%d]=%s\n",index,number);                    
                    /*
                    0  1    2       3      4        5       6    7     8     9    10   11 12 13 14 15 16
                    r  b   swpd   free   buff     cache     si   so    bi    bo   in   cs us sy id wa st
                    0  0    0    4449832 567328   2026208    0    0     0     0    0    1  2  2 96  0  0
                    */
                    switch(index)
                        {
                        case 3:
                            g_swapio_info.free = atol(number);
                            break;
                        case 4:
                            g_swapio_info.buff = atol(number);
                            break;
                        case 5:
                            g_swapio_info.cache = atol(number);
                            break;
                        case 6:
                            g_swapio_info.si = atol(number);
                            break;
                        case 7:
                            g_swapio_info.so = atol(number);
                            break;
                        case 8:
                            g_swapio_info.bi = atol(number);
                            break;
                        case 9:
                            g_swapio_info.bo = atol(number);
                            break;
                        default:
                            break;
                        }                   
                    index++;//下标加一
                }               
                bzero(number,sizeof(number));
                j=0;                
            }
        }
    }
    pclose(pFile);
    printf("swapio=%ld  %ld  %ld  %ld  %ld  %ld  %ld  \n",
        g_swapio_info.free,
        g_swapio_info.buff,
        g_swapio_info.cache,
        g_swapio_info.si,
        g_swapio_info.so,
        g_swapio_info.bi,
        g_swapio_info.bo);
    return 0;
}