Signals

来自osdev
跳到导航 跳到搜索

This article is a stub! 此页面或段落为 草稿。 你可以通过更精确的编辑贡献 来帮助本wiki。

信号量(Signa)是Unix发明的用于异步信令的一种同步机制,并已集成到C标准 (<signal.h>) 中。 当进程接收到信号 (通过硬件发送,或另一个进程使用 raise() 发送) 时,将调用 “信号处理句柄(signal handler)”。 信号处理句柄是指一个处理信号量的C函数; 这个函数作为函数指针传递给signal() 函数。 (如果没有为给定信号定义信号处理句柄,则该信号量的 raise() 将中止程序。)

处理句柄(Handling)

信号处理句柄是比较 “另类的”,因为它破坏了C程序的单控制流结构。 不仅如此,在C中,几乎没有什么是原子性的,甚至i++这样的东西都不是 (除非i变量是sig_atomic_t类型的) --- 请注意,C11增加了更多的原子性支持。 请自行阅读手册了解。

另见