[英]alarm(int) doesn't work in a while loop
我正在嘗試執行以下代碼:
signal(SIGALRM,handler);
alarm(1);
while(1){}
handler
函數僅打印“測試”。
在這種情況下, alarm(1)
最終將僅執行一次。 我試圖將其放入循環中,似乎根本沒有執行!
我對信號有點陌生。 有人可以向我解釋這是怎么發生的嗎?
如果在示例中將alarm(1)
放入循環中,則每次調用后幾微秒內將無限次調用alarm(1)
。 然后發生這種情況:
如果已使用alarm()設置了警報但尚未傳遞警報,則對alarm()的另一個調用將取代先前的調用。
即,在循環的每次迭代中都會清除警報。 而且由於您的循環永遠運行,因此警報永遠不會永久設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.