使用信号进行同步

时间:2013-04-18 11:23:53

标签: c synchronization signals parent-child

仅使用信号(非实时)来实现此类情况的方法是什么? :

有N个子节点(由fork()创建的进程),1个父节点,同步必须是这样的:

  1. 父母正在等待任何儿童信号。
  2. 每个孩子都向父母发送信号,然后阻止直到收到一个     来自父母的信号
  3. 父母向该孩子发送信号,他注意到了这个信号
  4. 我不知道该怎么办,因为只有2个用户定义的信号SIGUSR1,SIGUSR2,但我有N个孩子,所以很多孩子应该只使用一种信号,我很害怕

    任何想法?..

2 个答案:

答案 0 :(得分:0)

你不需要使用那些用户定义的信号你可以向任何孩子发送任何信号。或者你必须做的就是使用signal()sigaction()系统函数捕获该信号。 ..并从该信号的ISR发送信号给特定的孩子

答案 1 :(得分:0)

如果你真的只想通过信号做同步,(这不是一个好主意)
您可以使用 sigqueue 作为发件人, sigaction 作为收件人,
它允许你追加int或指向另一个进程的指针 因此,接收方可以通过附加信息识别发件人。