我正在嘗試編寫一個不使用pthread或信號庫的程序。我想用信號做一些同步。我在幾本Unix書籍中已經閱讀過它們,但我仍然不太明白。我寫了一些模擬程序設計/代碼,這不是我的程序,但它提供了我如何組織進程/信號的想法。這似乎是一個似是而非的解決方案嗎?Unix進程同步沒有pthreads/sempahores,信號?
程序流程
主要叉次隨機數,並執行「方案」中的每個孩子。該程序爲孩子分配一個值,1或2(例如輸入或輸出等)。
我想要一種方法來同步這些孩子。我認爲使用信號可能是可能的,並從我讀的東西我想要做這樣的事情:
如果子== 1,發送父(主)SIGUSR1,否則如果子== 2發送父(主)SIGUSR2 。當父母服務信號時,然後結束。
現在回到主要我想組織這些傳入信號。我一次只接受一種類型,所以如果一個孩子給我SIGUSR1,我會阻止所有的SIGUSR2,或者如果一個孩子先給我SIGUSR2,那麼我會阻止所有的SIGUSR1。 Main將接收到該信號並服務該類型的所有信號,直到沒有更多的類型爲止,然後它將檢查/解除其他類型的服務,如果它們存在則爲其提供服務,否則main將等待更多信號。
這似乎是一個正確的信號使用,這甚至可能與信號?
謝謝!
如果你想排隊的信號,一定要使用sigqueue(2)' – 2010-10-26 15:55:31
謝謝,我會讀更多關於它! – 2010-10-27 02:40:44