07訊號學習之setitimer函式及其案例

2021-10-17 08:44:26 字數 1313 閱讀 9028

int

setitimer

(int which,

const

struct itimerval *new_value,

struct itimerval *old_value);/*

功能:設定定時器(鬧鐘)。 可代替alarm函式。精度微秒us,可以實現週期定時。

成功:0;失敗:-1,設定errno。

引數1:which:指定定時方式。

① 自然定時:預設傳送itimer_real → 即編號為14的siglarm訊號。 計算自然時間

② 虛擬空間計時(使用者空間):預設傳送itimer_virtual → 即編號為26的si**talrm 只計算程序占用cpu的時間

③ 執行時計時(使用者+核心):預設傳送itimer_prof → 即編號為27的sigprof 計算占用cpu及執行系統呼叫的時間

引數2:new_value是定時秒數。

引數3:old_value是傳出引數,表示設定上次定時的剩餘時間。

struct itimerval

;struct timeval

; 這裡我們簡單的舉個關於new_value傳參的例子。(old_value是傳出引數,不需要傳參)

itimerval new_value;

new_value.it_value.tv_sec =2;

new_value.it_value.tv_usec =0;

//上面代表程式啟動後首次觸發定時傳送訊號是2秒後

new_value.it_interval.tv_sec =5;

new_value.it_interval.tv_usec =0;

/* 而這裡的5代表首次觸發即2秒後,下一次觸發時間為5s,並且會自動傳送定時訊號,

無需再次呼叫setitimer,這就是週期定時。即第二次傳送定時時間為第7秒,第三次為第12秒...一直往下

若你不想迴圈週期定時,將其置為0即可。一般我們不使用到tv_usec微秒,只需要用tv_sec這乙個成員即可。

*/*/

使用setitimer函式實現alarm函式,重複計算機1秒數數程式。

#include

#include

#include

unsigned

intmy_alarm

(unsigned

int sec)

return oldit.it_value.tv_sec;

}int

main

(void

)

PLC學習之07 繼電器

現在我們明白了plc是怎樣處理輸入 輸出和實際程式的,下面我們馬上就要開始編寫程式了。但首先讓我們看一下實際的繼電器是怎樣工作的。畢竟,plc的主要用途是替代 真實世界 中的繼電器的。我們可以把繼電器看作是電磁開關。給線圈加乙個電壓,產生乙個磁場。該磁場使繼電器的觸點閉合,使它們連線在一起。可以把這...

python 訊號量 python學習之訊號量

01 訊號量 1 概述 訊號量是用來控制線程併發數的。2 原理 boundedsemaphore和semaphore管理乙個內建的計數器。每當資源釋放遞增時 呼叫acquire 計數器 1,資源消耗時遞減 呼叫release 計數器 1。3 呼叫格式 threading.boundedsemapho...

linux學習筆記之訊號

訊號機制是程序之間想回傳遞訊息的一種方法,應用於非同步事件的處理,訊號全稱為軟中斷訊號,它被傳送給乙個正在被執行的程序以通知該程序有某一件事發生。發出訊號的原因有很多 1.與程序終止有關的訊號。當程序退出或子程序終止時,會發出這類訊號 2.與程序列外事件相關的訊號。如程序越界,或企圖寫乙個唯讀的記憶...