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