sig_chk 内核服务
用途
为内核进程提供轮询接收信号的能力。
语法
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/signal.h> int sig_chk ()描述
注意: 如果 锡格奇克 服务不是由内核进程调用的,那么将发生系统崩溃。
内核方式下的内核线程 可以调用 锡格奇克 内核服务来确定是否已接收到任何未屏蔽的信号。 信号不会抢占线程,因为关键数据区的串行化将丢失。 相反,线程必须定期轮询信号,或者在长时间睡眠被信号中断后进行轮询。
锡格奇克 服务会检查是否有任何具有指定 信号捕获 或 缺省值 操作的暂挂信号。 如果找到一个,那么服务将返回信号编号作为其返回值。 它还会从暂挂信号掩码中除去该信号。 如果找不到信号,那么此服务将返回值 0。 锡格奇克 服务不会返回被阻止或被忽略的信号。 正确处理信号是内核进程的责任。
对于仅内核线程, 锡格奇克 内核服务会从暂挂信号列表中清除返回的信号。 对于其他内核线程,不会清除该信号,但会将其保留为暂挂状态。 一旦它返回到用户方式,它就会被传递到内核线程。
内核扩展和设备支持编程概念 中的 了解内核线程 提供有关仅内核线程信号处理的更多信息。
执行环境
仅可从 流程环境 调用 锡格奇克 内核服务。
返回值
完成后,如果找不到暂挂的未屏蔽信号,那么 锡格奇克 服务将返回值 0。 否则,它会返回非零信号值,指示处于暂挂状态的最高优先级信号的数目。 信号值在 /usr/include/sys/signal.h 文件中定义。