Signals

以兩種不同的方式處理 SIGALRM

  • January 2, 2018

我們如何處理髮送的 2 個不同的警報alarm()

例如,如果我有A=5and B=10,我怎麼能告訴我的程序在幾秒鐘後做一個動作,在A幾秒鐘後做一個不同的動作B而不使用sleep()??

我提出這個問題的主要目的是了解我們如何在同一個程序中處理 2 個不同的警報。

你一次處理一個。首先,設置A=5幾秒鐘的鬧鐘。觸發後,執行所需的任務,然後再設置B-A = 10-5 = 5幾秒鐘的警報。點火後,執行其他任務。

或者通常,將定時任務保存在排序列表中,並使其始終為第一個要完成的任務的剩餘時間程式警報。

更一般地說,您可能同時在做其他事情,因此您可能有某種事件循環。在這種情況下,您將在事件循環(select()可能是呼叫)中使用 timeout 而不是alarm(),並從主程序執行定時任務。這樣一來,警報是否在做其他事情的過程中觸發並且沒有並發處理來搞砸事情並不重要。

引用自:https://unix.stackexchange.com/questions/414306