传统上我们所指的系统信号,就是系统传递给进程的控制信号。例如,SIGINT,SIGTERM等等。这些信号的传递,通常都是指示相关进程完成相应的操作,或暂停或终止,或其他一些操作。在Tor系统中,信号分为两种:传统信号,控制器信号。下面代码段是这些信号的简单罗列:
/* These signals are defined to help handle_control_signal work.
*/
#ifndef SIGHUP
#define SIGHUP 1
#endif
#ifndef SIGINT
#define SIGINT 2
#endif
#ifndef SIGUSR1
#define SIGUSR1 10
#endif
#ifndef SIGUSR2
#define SIGUSR2 12
#endif
#ifndef SIGTERM
#define SIGTERM 15
#endif
/* Controller signals start at a high number so we don't
* conflict with system-defined signals. */
#define SIGNEWNYM 129
#define SIGCLEARDNSCACHE 130
这些信号,是程序最主要关心的信号。他们都有相应的响应处理,其处理函数均为信号回调函数中调用的process_signal函数。在前面的小节中,我们已经提到过了关于信号事件的处理机制,这里就不再多说。但是,值得注意的是,当时的信号事件注册,并没有注册SIGNEWNYM信号和SIGCLEARDNSCACHE信号。也就是说,这两个信号并非由信号处理事件激活的。那他们是出现在何处的呢?答案是控制连接信号传递。
我们暂且将这个部分的内容搁置在这里,标题改成Control。在后期分析完成控制连接之后,将这个系统控制连接的主要作用和用法在这里进行详细描述。
未完待续……