2013-03-20 91 views
0

我寫了兩個使用SIGIO執行IPC的守護進程。然而,在重要的行動正在完成時,控制權有時會轉移到signal_handler上,這可能被認爲是原子性的行爲。有沒有辦法讓我指定,直到循環的當前迭代完成爲止,我們不會將控制轉移到signal_handler函數異步通知管理

在此先感謝 d

注意:我使用的是Linux

回答

0

我不知道是否有任何更好的方法來做到這一點,但我做了以下內容:

我設置一個全局變量sigio_rec在一個函數sigio_handler中爲true,sigio_handler是我註冊到sigaction()的函數,在引發SIGIO時被調用。 在每個循環結束時,程序檢查sigio_rec是否爲真,如果是,則從套接字檢索數據並繼續。

--ttfn

+0

我設法找到更好的方式來做到這一點,我注意到,在使用的時候一個SIGIO是rasied異步通知,我的機理上述結果的信號競爭條件引起的。我真正需要做的就是阻止SIGIO,這可以用sigprocmask來執行 - 代碼現在可以安全運行。 – user1658296 2013-03-26 20:41:15