【发布时间】:2010-10-26 04:44:51
【问题描述】:
我正在尝试编写一个不使用 pthread 或信号量库的程序。我想与信号进行一些同步。我在几本 Unix 书籍中读到过它们,但我还是不太明白。我写了一些模拟程序设计/代码,这不是我的程序,但它让我了解了我如何尝试组织流程/信号。这似乎是一个合理的解决方案?
程序流程:
Main fork 随机次数,并在每个子节点中执行“程序”。程序为孩子分配一个值,1 或 2(例如输入或输出等)。
我想要一种方法来同步这些孩子。我认为使用信号是可能的,从我读到的内容中,我想做类似的事情:
如果孩子 == 1,则发送父(主)SIGUSR1,否则如果孩子 == 2,则发送父(主)SIGUSR2。当父级为信号提供服务时,则结束。
现在回到 main 我想组织这些传入的信号。我一次只接受一种类型,所以如果一个孩子向我发送 SIGUSR1,我将阻止所有 SIGUSR2,或者如果一个孩子先向我发送 SIGUSR2,那么我将阻止所有 SIGUSR1。 Main 将接收信号并服务该类型的所有信号,直到不再有该类型的信号,然后它将检查/取消阻止其他类型并服务任何该类型(如果存在),否则 main 将等待更多信号。
这似乎是对信号的正确使用,甚至可以通过信号实现吗?
谢谢!
【问题讨论】:
-
如果要排队信号,请务必使用
sigqueue(2) -
谢谢,我会阅读更多相关信息!
标签: unix synchronization signals