国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Linux Shell > 正文

程序中獲取linux系統(tǒng)啟動時間方法

2020-07-27 19:20:01
字體:
供稿:網(wǎng)友

1、前言

時間對操作系統(tǒng)來說非常重要,從內(nèi)核級到應(yīng)用層,時間的表達方式及精度各部相同。linux內(nèi)核里面用一個名為jiffes的常量來計算時間戳。應(yīng)用層有time、getdaytime等函數(shù)。今天需要在應(yīng)用程序獲取系統(tǒng)的啟動時間,通過sysinfo中的uptime可以計算出系統(tǒng)的啟動時間。

2、sysinfo結(jié)構(gòu)

sysinfo結(jié)構(gòu)保持了系統(tǒng)啟動后的信息,主要包括啟動到現(xiàn)在的時間,可用內(nèi)存空間、共享內(nèi)存空間、進程的數(shù)目等。man sysinfo得到結(jié)果如下所示:

復(fù)制代碼 代碼如下:

 struct sysinfo {
                long uptime;             /* Seconds since boot */
                unsigned long loads[3];  /* 1, 5, and 15 minute load averages */
                unsigned long totalram;  /* Total usable main memory size */
                unsigned long freeram;   /* Available memory size */
                unsigned long sharedram; /* Amount of shared memory */
                unsigned long bufferram; /* Memory used by buffers */
                unsigned long totalswap; /* Total swap space size */
                unsigned long freeswap;  /* swap space still available */
               unsigned short procs;    /* Number of current processes */
               char _f[22];             /* Pads structure to 64 bytes */

3、獲取系統(tǒng)啟動時間

通過sysinfo獲取系統(tǒng)啟動到現(xiàn)在的秒數(shù),用當前時間減去這個秒數(shù)即系統(tǒng)的啟動時間。程序如下所示:

復(fù)制代碼 代碼如下:

 #include <stdio.h>
 #include <sys/sysinfo.h>
 #include <time.h>
 #include <errno.h>

 static int print_system_boot_time()
 {
     struct sysinfo info;
     time_t cur_time = 0;
    time_t boot_time = 0;
    struct tm *ptm = NULL;
    if (sysinfo(&info)) {
    fprintf(stderr, "Failed to get sysinfo, errno:%u, reason:%s/n",
        errno, strerror(errno));
    return -1;
    }
    time(&cur_time);
    if (cur_time > info.uptime) {
    boot_time = cur_time - info.uptime;
    }
    else {
    boot_time = info.uptime - cur_time;
    }
    ptm = gmtime(&boot_time);
    printf("System boot time: %d-%-d-%d %d:%d:%d/n", ptm->tm_year + 1900,
        ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
   return 0;
}

int main()
{
    if (print_system_boot_time() != 0) {
    return -1;
    }
    return 0;
}


測試結(jié)果如下所:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 延吉市| 抚顺市| 遂昌县| 平塘县| 澜沧| 通许县| 呼图壁县| 武乡县| 拉孜县| 寿阳县| 安徽省| 巨鹿县| 柳林县| 遵化市| 维西| 当阳市| 抚州市| 上虞市| 凤城市| 格尔木市| 江北区| 湾仔区| 修水县| 彰化县| 淳化县| 晋城| 正蓝旗| 开原市| 崇文区| 定州市| 惠来县| 内黄县| 微博| 崇义县| 阜宁县| 易门县| 辽阳县| 长海县| 曲阳县| 于田县| 常州市|