我有一个服务器和客户端代码,通过命名管道(FIFO)相互IPC。客户端向服务器发送SIGNAL(例如SIGUSR1)并检查是否有给定时间分辨率的任何信号(通过命令行参数)。服务器每次检查(如果5ms)5ms,检查5ms后是否有信号到达,如果到达,它会执行一些代码,如果没有继续,直到它捕获到一个信号。检查信号是否到达给定的分辨率
所以这就是我的问题所在。我不知道用什么来做这种动作。我查阅了“Unix系统编程:通信,并发和线程Kay A. Robbins,Steven Robbins”发现了可能用于我的一些函数。睡眠,闹钟,uSleep,了nanosleep,暂停。但我不知道在我的情况下使用哪一个。睡眠是没有问题的,我认为由于它需要几秒钟,我认为它会在您尝试转换为毫秒时溢出。
一段代码片段或psudocode会很好理解我。
我只是问如何检查信号是否以给定的分辨率频率到达。我必须检查信号是否以毫秒为单位。如果信号捕捉,请检查任何给定的“n”mseconds。
这是不清楚 - 想必你已经注册的信号处理,但除此之外,我不能告诉你描述。 –
我做了一个信号处理程序。我有2个程序,一个叫做Timeserver,另一个是客户端。 Timeserver以毫秒为单位获取点击以检查信号是否到达给定的参数。像“./timeserver 5”会每5毫秒检查一次信号。如果有信号,信号处理程序当然会运行。我基本上想阻止和解除给定的“毫秒参数” – opricnik
你不想阻止和解锁。如果信号到达,您希望信号处理程序设置一个标志。 – AlexP