4 linux程式設計入門 時間概念

2021-06-05 01:01:28 字數 2872 閱讀 5080

前言: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 塊千兆網絡卡...