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.與程序列外事件相關的訊號。如程序越界,或企圖寫乙個唯讀的記憶...