你选错方法实现这个需求了。 seanking1987 发表于 2016-07-18 15:54 static/image/common/back.gif
大家都被带到信号9的坑里了。。
确实,这就是个标准的x-y问题。 给你几个方案:
1、写个内核模块,禁掉指定进程的SIGSTOP和SIGKILL,还别说,很多恶意软件就是这么干的。
2、给系统换个root密码,然后用root权限启动你的程序,这样所有其它用户就没权限给你的进程发信号了
3、干掉产品经理,把现场伪装成事故,如此反复直到换上一个不会提这种傻逼需求的产品经理。 static void stop(int sig)
{
switch(sig) {
case SIGTERM: /* kill. */
printf("receive signal: SIGTERM");
break;
case SIGINT: /* Ctrl-C. */
printf("receive signal: SIGINT");
break;
case SIGUSR1: /* user defined signal. */
printf("receive signal: SIGUSR1");
break;
default: /* -1: unexpected. */
printf("receive signal: unexpected signal");
break;
}
}
static void reg_signals()
{
signal(SIGINT, stop); // Ctrl-C
signal(SIGTERM, stop); // kill
signal(SIGUSR1, stop); // user defined signal.
}可以用上面的方式捕捉对应的signal
页:
1
[2]