posix時鐘系列:
建立、初始化以及刪除乙個定時器的行動被分為三個不同的函式:timer_create()(建立定時器)、timer_settime()(初始化定時器)以及timer_delete(銷毀它)。
(1)建立乙個定時器:
int timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
程序可以通過呼叫timer_create()建立特定的定時器,定時器是每個程序自己的,不是在fork時繼承的。
引數clock_id說明定時器是基於哪個時鐘的。
clock_id取值為以下:
clock_realtime :systemwide realtime clock.
clock_monotonic:represents monotonic time. cannot be set.
clock_process_cputime_id :high resolution per-process timer.
clock_thread_cputime_id :thread-specific timer.
clock_realtime_hr :high resolution version of clock_realtime.
clock_monotonic_hr :high resolution version of clock_monotonic.
引數*timerid裝載的是被建立的定時器的id。該函式建立了定時器,並將他的id 放入timerid指向的位置中。
引數evp指定了定時器到期要產生的非同步通知。
如果evp為null,那麼定時器到期會產生預設的訊號,對 clock_realtimer來說,預設訊號就是sigalrm。
如果要產生除預設訊號之外的其它訊號,程式必須將 evp->sigev_signo設定為期望的信號碼。
struct sigevent 結構中的成員evp->sigev_notify說明了定時器到期時應該採取的行動。通常,這個成員的值為sigev_signal,這個值說明在定時器到期時,會產生乙個訊號。程式可以將成員evp->sigev_notify設為sigev_none來防止定時器到期時產生訊號。
如果幾個定時器產生了同乙個訊號,處理程式可以用 evp->sigev_value來區分是哪個定時器產生了訊號。要實現這種功能,程式必須在為訊號安裝處理程式時,使用struct sigaction的成員sa_flags中的標誌符sa_siginfo。
Linux學習筆記(05 25)條件變數的使用
1.互斥量的存在問題 互斥量是執行緒程式必需的工具,但它們並非萬能的。如果執行緒正在等待共享資料內某個條件出現,它可以重複對互斥物件鎖定和解鎖,每次都會檢查共享資料結構,以查詢某個值。但這種繁忙查詢的效率非常低。可以讓呼叫執行緒短暫地進入睡眠,比如睡眠三秒鐘,但就無法最快作出響應。需要的是 當執行緒...
Linux學習筆記 定時任務設定
定時任務通常用於處理需要定期執行的系統維護任務,比如日誌清理,系統檢查等,通過crontab和at,命令可以實現。u user指定執行此任務的使用者是誰,如果不設定,預設是當前登入使用者,該選項只有root使用者才能使用 l 顯示當前使用者的任務 r 刪除當前使用者的任務 e 更改使用者的任務要使用...
linux學習筆記之許可權管理和定時任務
linux 使用者許可權管理 修改許可權管理 chmod指令修改資料夾或者檔案許可權 定時任務 我們經常使用的是crontab命令是cron table的簡寫,它是cron的配置檔案,也可以叫它作業列表,我們可以在以下資料夾內找到相關配置檔案。我們用crontab e進入當前使用者的工作表編輯 我們...