系统启动后,加载完内核,便会执行 /etc/rc,这时候是能够被 Ctrl - C打断的,而有些系统是不能容忍中断的。
因此需要屏蔽 Ctrl-C 按键。
找到 /usr/src/sbin/init/init.c 文件,这是 init 进程的源文件,/etc/rc 是被这个进程进行调用执行的。
在 init.c 中,会调用 run_script 函数,这个函数负责执行一些特定的脚本,信号的屏蔽需要在这里进行修改。
如:
sigemptyset(&sa.sa_mask);
sa.sa_flags=0;
sa.sa_handler=SIG_IGN;
if (strncmp(script,"/etc/rc",7) == 0)
{
sigaction(SIGINT,&sa,(struct sigaction *)0);
warning("%s on %s SIGINT ignore.",shell,script);
}
sigaction(SIGTSTP....);
sigaction(SIGHUP....);
重新编译,替换 init 程序即可。