在C语言中,可以使用signal()
函数来处理或忽略特定的信号,例如TERM信号
#include<stdio.h>
#include <stdlib.h>
#include<signal.h>
#include <unistd.h>
// 信号处理函数
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信号干扰程序的正常运行。