首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

Linux C 程式設計:讀取 /proc/uptime 獲取系統啟動時長

     編輯:關於C

核心思路

/proc/uptime 提供兩個數值(秒):系統啟動總時間、閒置進程累積時間。讀取第一個值即為系統運行時長。

Shell 驗證

$ cat /proc/uptime
3600.45 7200.90

第一欄 3600.45 秒 = 1 小時左右。

C 程式完整實現

#include 
#include 
#include 
#include 

struct timeval get_uptime(void) {
    struct timeval now = {0, 0};
    FILE *fp = fopen("/proc/uptime", "r");
    if (!fp) return now;

    char buf[64];
    if (fgets(buf, sizeof(buf), buf)) {
        char *dot = strchr(buf, '.');
        if (dot && (dot - buf + 2) < 30) {
            buf[dot - buf + 2] = '\0';      // 保留小數點後 1 位
            now.tv_sec = atol(buf);         // 整數秒
        }
    }
    fclose(fp);
    return now;
}

int main(void) {
    struct timeval up = get_uptime();
    printf("uptime = %ld seconds\n", up.tv_sec);
    return 0;
}

關鍵點解析

  • 用 fgets 讀取整行,避免 fread 需指定長度的麻煩。
  • strchr 定位小數點,截取整數部分轉換為 time_t。
  • 錯誤處理:檔案開啟/讀取失敗時返回零值。
  • struct timeval 僅用 tv_sec,微秒欄位置零(uptime 精度通常只需秒)。

編譯與執行

gcc uptime.c -o uptime
./uptime
# 輸出範例:uptime = 3600
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved