真扭结!linux定时器发出的信号怎样携带参数,要把一个参数传递给该信号处理函数
真纠结!linux定时器发出的信号怎样携带参数,要把一个参数传递给该信号处理函数
要在程序中每隔一段时间执行一个函数一次。要把主程序中一个结构的地址传递给该函数。signal注册的信号处理函数除了信号值本身外不能携带而外参数。sigaction注册的信号处理函数可以有3个参数,一个信号值本身,一个void指针,第3个参数POSIX标准没有定义(好像不能用)。
本来想用sigaction注册信号处理函数,这样处理函数就可以接受而外传递的参数了。可是定时器信号发出时,怎么给定额外信息参数呢?
sigqueue函数可以在发出信号时让信号携带额外的参数。可是我的信号是由定时器发出的。怎么传递参数呢?
------解决思路----------------------
全局变量不优雅???全局变量不要滥用,只在必要的时候用就是了。
sigaction不能带额外参数,是由它的特性确定的。posix也是这么规定的,这个问题不用纠结。
------解决思路----------------------
你要的只是获得外部数据的方式,
全局变量,函数,都可以,
如果觉得全局变量不优雅,就用函数封一下。
------解决思路----------------------
可以共享内存啊,消息队列啊.多了
------解决思路----------------------
不要用signal();用sigaction();
------解决思路----------------------
用多了就会体会到封装的好处。
------解决思路----------------------
这个哪里复杂嘛,消息队列10行代码内就能解决你的问题.
------解决思路----------------------
实在想加个参数, thunk贝...
------解决思路----------------------
定时器发出的信号,没有额外的参数,这个真没有办法。
在信号处理函数里去取主程序中一个结构的地址吧。
------解决思路----------------------
namespace glo{
//全局变量
}
------解决思路----------------------
只要有函数指针, 不就可以thunk么, 想传几个参数传几个, 不过就是不比全局变量好看倒是, 对细节的依赖也稍微多点, 换种CPU啥的又得重新写下, 不过准备好 x86, amd64, arm , mips , ppc , sh4 版本大部分时候就可以了, 遇到新的了再加也不费啥事情. 如果确实需要, 这就标准做法, 没啥大不了的.
要在程序中每隔一段时间执行一个函数一次。要把主程序中一个结构的地址传递给该函数。signal注册的信号处理函数除了信号值本身外不能携带而外参数。sigaction注册的信号处理函数可以有3个参数,一个信号值本身,一个void指针,第3个参数POSIX标准没有定义(好像不能用)。
本来想用sigaction注册信号处理函数,这样处理函数就可以接受而外传递的参数了。可是定时器信号发出时,怎么给定额外信息参数呢?
sigqueue函数可以在发出信号时让信号携带额外的参数。可是我的信号是由定时器发出的。怎么传递参数呢?
------解决思路----------------------
全局变量不优雅???全局变量不要滥用,只在必要的时候用就是了。
sigaction不能带额外参数,是由它的特性确定的。posix也是这么规定的,这个问题不用纠结。
------解决思路----------------------
你要的只是获得外部数据的方式,
全局变量,函数,都可以,
如果觉得全局变量不优雅,就用函数封一下。
------解决思路----------------------
可以共享内存啊,消息队列啊.多了
------解决思路----------------------
不要用signal();用sigaction();
------解决思路----------------------
用多了就会体会到封装的好处。
------解决思路----------------------
这个哪里复杂嘛,消息队列10行代码内就能解决你的问题.
------解决思路----------------------
实在想加个参数, thunk贝...
------解决思路----------------------
定时器发出的信号,没有额外的参数,这个真没有办法。
在信号处理函数里去取主程序中一个结构的地址吧。
------解决思路----------------------
namespace glo{
//全局变量
}
------解决思路----------------------
只要有函数指针, 不就可以thunk么, 想传几个参数传几个, 不过就是不比全局变量好看倒是, 对细节的依赖也稍微多点, 换种CPU啥的又得重新写下, 不过准备好 x86, amd64, arm , mips , ppc , sh4 版本大部分时候就可以了, 遇到新的了再加也不费啥事情. 如果确实需要, 这就标准做法, 没啥大不了的.