【问题标题】:Synchronisation using signals使用信号同步
【发布时间】:2013-04-18 11:23:52
【问题描述】:

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

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

  1. 父级正在等待任何子级信号。
  2. 每个孩子都向父母发送信号,然后阻塞直到收到 来自父母的信号
  3. 父母向那个孩子发送信号,他注意到了这个信号

我不知道该怎么办,因为只有2个用户定义的信号SIGUSR1,SIGUSR2,但是我有N个孩子,所以很多孩子应该只使用一种信号,我很害怕

有什么想法吗?..

【问题讨论】:

    标签: c synchronization signals parent-child


    【解决方案1】:

    您不需要使用那些用户定义的信号,您可以将任何信号发送给任何孩子..或父母您所要做的就是使用signal()sigaction() 系统函数来捕获该信号...并从该信号的 ISR 向特定子节点发送信号

    【讨论】:

      【解决方案2】:

      如果您真的只想通过信号进行同步,(这不是一个好主意)
      您可以使用 sigqueue 作为发送方,sigaction 作为接收方,
      它允许您将 int 或指针附加到另一个进程。
      所以接收者可以通过附加信息来识别发送者。

      【讨论】:

        猜你喜欢
        • 2015-05-06
        • 1970-01-01
        • 2018-09-25
        • 1970-01-01
        • 1970-01-01
        • 2013-05-30
        • 1970-01-01
        • 2011-04-25
        相关资源
        最近更新 更多