【发布时间】:2011-04-21 08:38:42
【问题描述】:
有没有办法在 Linux 中创建用户定义的信号?我的信号(信号编号)不应与任何现有的信号编号匹配。
换句话说,我想创建自己的独特信号,它将被我的处理程序注册和捕获。
有可能吗?如果是,怎么做?
提前致谢。
【问题讨论】:
有没有办法在 Linux 中创建用户定义的信号?我的信号(信号编号)不应与任何现有的信号编号匹配。
换句话说,我想创建自己的独特信号,它将被我的处理程序注册和捕获。
有可能吗?如果是,怎么做?
提前致谢。
【问题讨论】:
SIGRTMIN 到 SIGRTMAX(这些通常不是常量,而是扩展为在运行时评估的函数的宏)可用于您喜欢的任何用途,SIGUSR1 和 SIGUSR2 也是如此。前者有额外的实时排队支持;后者没有。只需选择一个即可使用。
【讨论】:
你可以用特殊的信号编译你自己的内核:)
【讨论】:
您不能添加或注册自己的 SIGWHATEVER。
见sigset_t,它是固定大小的。请参阅valid_signal() Beartraps。
【讨论】:
valid_signal( )?我找不到任何手册页。
valid_signal() 是 Linux 内核中的一个函数,如果信号小于信号的数量,则返回 true。它被 kill() 系统调用之类的东西用来阻止你做一些事情,比如定义你自己的信号。
USR1 和 USR2 信号是为用户定义的目的而设计的。
【讨论】:
你可以使用 USR1 和 USR2 来做这种事情。
如果这还不够,您可以通过让应用程序监听外部应用程序可以向其发送消息的套接字来模拟类似信号的行为。
【讨论】: