如果进程通过执行设置 SIGALARM 信号alarm(10)
。这意味着 10 秒后操作系统将发送 SIGALARM。
如果存在上下文切换,会发生什么 - 无论上下文切换如何,系统仍会发送信号吗?或者它会返回到进程并等待它(总共)运行 10 秒然后才发送信号?
答案1
alarm()
实时计数,POSIX 中的文本明确指出这一点,即使Linux 手册页对此并没有明确说明。因此,无论进程是否正在运行,计时器都会运行。通常,如果进程正在睡眠,信号会唤醒该进程,但如果有其他更高优先级的进程需要运行,操作系统可能仍然决定不实际运行该进程。
还有setitimer()
,它可以提供一个仅在进程运行时运行的计时器。