在C语言中,可以使用signal()
函数来处理或忽略特定的信号,例如TERM信号
#include#include #include #include // 信号处理函数 void signal_handler(int sig) { if (sig == SIGTERM) { printf("收到TERM信号,程序将在一段时间后正常退出。\n"); sleep(5); // 模拟程序在收到TERM信号后需要完成一些清理工作 exit(0); } } int main() { // 注册信号处理函数 signal(SIGTERM, signal_handler); printf("程序正在运行,按任意键发送TERM信号。\n"); getchar(); // 发送TERM信号给自己 raise(SIGTERM); return 0; }
在这个示例中,我们定义了一个名为signal_handler
的信号处理函数,当收到TERM信号时,该函数会被调用。我们使用signal()
函数将TERM信号与signal_handler
函数关联起来。
当程序运行时,它会等待用户输入。当用户输入任意键时,程序会向自己发送一个TERM信号。由于我们已经注册了信号处理函数,所以程序不会立即终止,而是执行signal_handler
函数中的代码。在这个示例中,我们让程序等待5秒钟,然后正常退出。这样就避免了TERM信号干扰程序的正常运行。