我有一個服務器和客戶端代碼,通過命名管道(FIFO)相互IPC。客戶端向服務器發送SIGNAL(例如SIGUSR1)並檢查是否有給定時間分辨率的任何信號(通過命令行參數)。服務器每次檢查(如果5ms)5ms,檢查5ms後是否有信號到達,如果到達,它會執行一些代碼,如果沒有繼續,直到它捕獲到一個信號。檢查信號是否到達給定的分辨率
所以這就是我的問題所在。我不知道用什麼來做這種動作。我查閱了「Unix系統編程:通信,併發和線程Kay A. Robbins,Steven Robbins」發現了可能用於我的一些函數。睡眠,鬧鐘,uSleep,了nanosleep,暫停。但我不知道在我的情況下使用哪一個。睡眠是沒有問題的,我認爲由於它需要幾秒鐘,我認爲它會在您嘗試轉換爲毫秒時溢出。
一段代碼片段或psudocode會很好理解我。
我只是問如何檢查信號是否以給定的分辨率頻率到達。我必須檢查信號是否以毫秒爲單位。如果信號捕捉,請檢查任何給定的「n」mseconds。
這是不清楚 - 想必你已經註冊的信號處理,但除此之外,我不能告訴你描述。 –
我做了一個信號處理程序。我有2個程序,一個叫做Timeserver,另一個是客戶端。 Timeserver以毫秒爲單位獲取點擊以檢查信號是否到達給定的參數。像「./timeserver 5」會每5毫秒檢查一次信號。如果有信號,信號處理程序當然會運行。我基本上想阻止和解除給定的「毫秒參數」 – opricnik
你不想阻止和解鎖。如果信號到達,您希望信號處理程序設置一個標誌。 – AlexP