我知道,我可以屏蔽執行處理程序時(通過使用sa_mask)引發的信號。但是,我想知道如何在更新某些全局變量時屏蔽信號。全局變量更新時的屏蔽信號
此外,我想知道如何在特定用戶定義函數執行時屏蔽信號。
可以做這兩件事嗎?
任何幫助將不勝感激
感謝
我知道,我可以屏蔽執行處理程序時(通過使用sa_mask)引發的信號。但是,我想知道如何在更新某些全局變量時屏蔽信號。全局變量更新時的屏蔽信號
此外,我想知道如何在特定用戶定義函數執行時屏蔽信號。
可以做這兩件事嗎?
任何幫助將不勝感激
感謝
你可以稱之爲 「信號()」 你想要的任何時間;或者a)將信號處理程序設置爲某些自定義代碼,或者b)通過將處理程序參數設置爲NULL來清除它。
sigaction(),當然,可以爲您提供更細緻的控制。您可以隨時調用sigaction(例如,在更新全局變量之前)。
此鏈接可能幫助:
有可能與sigblock()
阻止信號。當信號被解除阻塞時,阻塞的信號將排隊並釋放。
然而 - 這是非常昂貴的。你必須做一個系統調用來阻止和一個系統調用來解除阻止。如果你經常這樣做,這可能會很慢。所以有一些替代方法:
volatile
標誌。在你的信號處理程序中,檢查這個標誌;如果你看到它,write()
到pipe
的信號編號並立即返回。在你的信號處理程序中,檢查這個管道上的信號,並在該點重新輸入信號。
如何在執行用戶定義函數期間阻塞信號? – CuriousCoder