前言:linux下的時間概念
這一章我們學習linux的時間表示和計算函式
時間的表示
時間的測量
計時器的使用
1、時間表示
在程式當中,我們經常要輸出系統當前的時間,比如我們使用date命令的輸出結果.這個時候我們可以使用下面兩個函式
[cpp]view plain
copy
#include
time_t
time(
time_t
*tloc); //通常引數設定為null
char
*ctime(
const
time_t
*clock); //這個函式就是將上面的函式返回值——秒數,轉換為我們常見的thu dec 7 14:58:59 2000
time函式返回從2023年1月1日0點以來的秒數.
儲存在time_t結構之中.不過這個函式的返回值對於我們來說沒有什麼實際意義.這個時候我們使用第二個函式將秒數轉化為字串
. 這個函式的返回型別是固定的:乙個可能值為. thu dec 7 14:58:59 2000 這個字串的長度是固定的為262。
2、時間的測量
有時候我們要計算程式執行的時間.比如我們要對演算法進行時間分析..這個時候可以使用下面這個函式.
[cpp]view plain
copy
#include
intgettimeofday(
struct
timeval *tv,
struct
timezone *tz);
strut timeval ;
gettimeofday將時間儲存在結構tv之中.tz一般我們使用null來代替.
#include
#include
#include
//這個linux下,好像不支援吧
void
function()
intmain(
void
)
這個程式輸出函式的執行時間,我們可以使用這個來進行系統效能的測試,或者是函式演算法的效率分析.在我機器上的乙個輸出結果是: used time:0.556070
注意:linux下編譯時,要加上庫函式:gcc -g file.c -lm
3、計時器的使用
linux作業系統為每乙個程序提供了3個內部間隔計時器.
itimer_real:減少實際時間.到時的時候發出sigalrm訊號.itimer_virtual:減少有效時間(程序執行的時間).產生sigvtalrm訊號.
itimer_prof:減少程序的有效時間和系統時間(為程序排程用的時間).具體的操作函式是:這個經常和上面乙個使用用來計算系統核心時間和使用者時間.產生 sigprof訊號.
[cpp]view plain
copy
#include
intgetitimer(
intwhich,
struct
itimerval *value);
intsetitimer(
intwhich,
struct
itimerval *newval,
struct
itimerval *oldval);
struct
itimerval
getitimer函式得到間隔計時器的時間值.儲存在value中。
setitimer函式設定間隔計時器的時間值為newval.並將舊值儲存在oldval中.
which表示使用三個計時器中的哪乙個.itimerval結構中的it_value是減少的時間,當這個值為0的時候就發出相應的訊號了. 然
後設定為it_interval值.
[cpp]view plain
copy
#include
#include
#include
#include
#include
#define prompt "時間已經過去了兩秒鐘\n\a"
char
*prompt=prompt;
unsigned int
len;
void
prompt_info(
intsigno)
/*---- 檔案描述符用來表示乙個開啟的檔案,檔案描述符是乙個非負整數。一般程式中預設開啟了的檔案描述符為0:stdin_fileno,1:stdout_fileno,2:stderr_fileno------*/
void
init_sigaction(
void
)
void
init_time()
intmain(
void
)
這個程式每執行兩秒中之後會輸出乙個提示.
程式設計入門 時間概念
這一章我們學習linux的時間表示和計算函式 時間的表示 時間的測量 計時器的使用 1。時間表示 在程式當中,我們經常要輸出系統當前的時間,比如我們使用date命令 的輸出結果.這個時候我們可以使用下面兩個函式 i nclude time t time time t tloc char ctime ...
4 Linux核心模組
什麼是模組?linux 的一種機制,使得編譯出的核心本身並不需要包含所有功能,而在這些功能需要被使用的時候,其對應的 可被動態地載入到核心中。模組具有什麼特點?模組有哪些常用命令?linux 核心模組有哪些組成部分,有什麼作用?如何定義模組載入函式?static int init initializ...
Linux學習筆記 4(Linux網路配置)
centos 1.centos伺服器預設網絡卡配置檔案在 etc sysconfig network scripts 下 命名的名稱一般為 ifcfg eth0 ifcfg eth1 eth0 表示第一塊網絡卡,eth1 表示第二塊網絡卡,依次類推。一般 dell r720 標配有 4 塊千兆網絡卡...