【发布时间】:2012-12-14 11:19:37
【问题描述】:
http://codepad.org/rHIKj7Cd(不是全部代码)
我想要完成的是,父母在共享内存中写一些东西,然后孩子做出相应的反应,然后每五秒钟写回一些东西。我考虑过使用 SIGUSR1-2,并且可能在处理程序中打开 signum,但我不知道如何编写代码,因为 setitimer 会抛出 SIGALRM。我显然不想分叉处理程序,因为我只需要一个孩子和一个父母,那么我如何定义不同的行为?我希望我的目标很明确:
每 5 秒:
- SIGALRM 被定时器抛出
- 父级将其计算写入共享内存(正在使用信号量)
- 子级从共享内存中读取,写回它的计算
我也知道不建议使用 signal(),这不是重点。
【问题讨论】:
-
你可以使用类似semaphores的东西来同步这两个进程。
-
我就是这样做的,我很困惑的是把父母和孩子的工作放在哪里。因为当我把它放在现在的位置时,它只是运行一次,如果我把它放在handler函数中,就会有很多不必要的过程。