一、不可靠的信号

在早期的UNIX版本中,信号是不可靠的。不可靠在这里指的是,信号可能会丢失:一个信号发生了,但进程却可能一直不知道这一点

早期版本中的一个问题是在进程每次接到信号对其进行处理时,随即将该信号动作复位为默认值(经测试,发现我现在用的Red Hat Linux 2.6.18也是这样处理的。)。在描述这些早期系统的编程书籍中,有一个经典实例,它与如何处理中断信号相关,其代码与下面所示的相似:

int    sig_int();                /* my signal handling function */
...
signal(SIGINT, sig_int);    /*establish handler */
...
sig_int()
{
  signal(SIGINT, sig_int); /* restablish handler for next time */
  ...                               /* process the signal ... */
}
View Code

相关文章: