【发布时间】:2026-02-23 05:25:07
【问题描述】:
我发现在 HPUX 上,SIGALRM 信号可以由系统创建,并在单线程应用程序中被进程正确捕获。但是,如果我在线程中设置 SIGALRM,则 SIGALRM 将不再发生。 为什么?此问题仅在 HPUX 平台上出现,但在其他 UNIX 平台(solaris sparc、x86、Linux、AIX、Mac 和 Ubantu)上运行良好
请帮帮我!谢谢!
【问题讨论】:
标签: multithreading alarm hp-ux
我发现在 HPUX 上,SIGALRM 信号可以由系统创建,并在单线程应用程序中被进程正确捕获。但是,如果我在线程中设置 SIGALRM,则 SIGALRM 将不再发生。 为什么?此问题仅在 HPUX 平台上出现,但在其他 UNIX 平台(solaris sparc、x86、Linux、AIX、Mac 和 Ubantu)上运行良好
请帮帮我!谢谢!
【问题讨论】:
标签: multithreading alarm hp-ux
Multithreaded Environments 中的信号处理:作为 信号处理程序: 对于所有 UNIX 平台,信号处理程序是按进程安装的。在多线程环境中,进程中的每个信号只有一个信号处理程序。为任何线程安装的最后一个信号处理程序对进程中的所有线程都有效。传递信号时调用处理程序。
另外,SIGALRM 是由接收它们的进程控制之外的事件生成的异步信号,并在不可预知的时间到达。因为异步信号被传递给进程而不是线程,而不考虑正在执行的指令。这就是为什么SIGALRM 不能在HPUX 上的线程中发生。
这在 HP-UX 调度策略中;有Signal Processing Notes of HP-UX。
【讨论】: