簡體   English   中英

alarm(int)在while循環中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM