時間程式設計 使用者空間

2021-06-07 03:05:50 字數 2006 閱讀 5359

這篇使用者空間的時間程式設計。

1.時間型別:

a. coordinated universal time (utc):世界標準時間,即大家所熟知

格林威治標準時間(greenwich mean time, gmt)

b. calendar time:日曆時間,是用「從乙個標準時間點(如2023年1月1

日0點)到此時經過的秒數」來表示時間。

2. 時間獲取:

#include

a.  time_t time(time_t *tloc);

功能:獲取日曆時間,即從2023年1月1日0點到現在所經歷的秒數。

/* typedef long time_t */

b. struct tm *gmtime(const time_t *timep)

功能: 將日曆時間轉化為格林威治標準時間,並儲存至tm結構。

c. struct tm *localtime(const time_t *timep)

功能: 將日曆時間轉化為本地時間,並儲存至tm結構。

3. 時間儲存 --- tm結構

struct tm

4. 時間顯示:

a. char *asctime(const struct tm *tm)

功能: 將tm格式的時間轉化為字串,如:

sat jul 30 08:43:03 2005

b. char *ctime(const time_t *timep)

功能: 將日曆時間轉化為本地時間的字串形式。

int gettimeofday(struct timeval *tv, struct timezone *tz)

功能:獲取從今日凌晨到現在的時間差,常用於計算事件耗時。

struct timeval

6. 延時功能:

a. unsigned int sleep(unsigned int seconds)

功能:使程式睡眠 seconds 秒。

b. void usleep(unsigned long usec)

功能:使程式睡眠 usec 微秒

7. timespec 結構體:

struct timespec

例子:

#include #include #include int main()

兩點說明:

1、這裡的秒和納秒數是自2023年1月1號00:00:00開始計時,到現在所經歷的時間。

2、在編譯的時候,如果gcc spec.c -o spec沒有通過的話,加上-lrt在進行編譯,表示此前沒有載入該庫。

與struct

timeval 唯一的不同,將結構體內成員微秒變換成納秒,提高了精確度。

其次,struct timeval 還提供了諸多的函式,諸如:

time(),gettimeofday(),localtime(),gmtime(),mktime(),asctime(),ctime()和strftime()的時間函式,

同時有大量的格式轉換,滿足我們所需要的格式。

補充:a. $date --- 命令檢視本機linux系統時間

b.

注意,以上是應用程式程式設計所涉及的時間方面的函式,核心內部並不是用這些。

熱插拔時間從核心空間到使用者空間的傳遞過程

將可移動裝置連入系統時,系統的後台中會依次發生如下事件 l 核心檢測到新硬體插入,然後分別通知hotplug和udev。前者用來裝入相應的核心模組 如usb storage 而後者用來在 dev中建立相應的裝置節點 如 dev sda1 l udev建立了相應的裝置節點之後,會將這一訊息通知hal的...

核心空間與使用者空間

1.核心態與使用者態的區別 1 核心態 的 不受任何限制,可以訪問 所有處理器指令集 記憶體位址以及i o空間 2 使用者態的 只能訪問其位址空間的頁表項中規定的虛擬位址。2.使用者態到核心態的切換方式 1 系統呼叫 軟中斷的一種 由使用者程序主動發起 2 異常 當cpu在執行執行在使用者態下的程式...

使用者空間和核心空間

應用程式是從頭到尾執行單個任務。模組只是預先註冊自己以便服務於將來的某個請求,模組初始化函式的任務就是為以後呼叫模組函式預先做準備,就像模組說 我在這,並且我能做這些工作。模組的退出函式將在模組被解除安裝前呼叫,他告訴核心 我要離開了,不要再讓我做任何事了。應用程式在退出時,可以不管資源的釋放或其他...