0

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

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

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

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

有任何想法吗?..

4

2 回答 2

0

您不需要使用那些用户定义的信号您可以向任何孩子发送任何信号..或父母您所要做的只是使用signal()sigaction()系统功能捕获该信号...并从该信号的 ISR 向特定孩子发送信号

于 2013-04-18T11:39:02.840 回答
0

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

于 2013-04-18T11:40:23.993 回答