使用sigaction替代signal

unix环境高级编程中有关于说signal可能会丢失信号，或者使用signal注册的信号处理函数会在执行一次后恢复默认行为，推荐使用sigaction。如果采用sigaction的话，可以将signal结构体定义、set_signal_handler()及sigignore()函数放到专门的处理信号的一个文件或者tc_util文件中，使得模块化。