MMMIX 发表于 2016-07-18 19:37

回复 5# 老爷康


    你选错方法实现这个需求了。

MMMIX 发表于 2016-07-18 19:39

seanking1987 发表于 2016-07-18 15:54 static/image/common/back.gif
大家都被带到信号9的坑里了。。

确实,这就是个标准的x-y问题。

windoze 发表于 2016-07-18 23:22

给你几个方案:
1、写个内核模块,禁掉指定进程的SIGSTOP和SIGKILL,还别说,很多恶意软件就是这么干的。
2、给系统换个root密码,然后用root权限启动你的程序,这样所有其它用户就没权限给你的进程发信号了
3、干掉产品经理,把现场伪装成事故,如此反复直到换上一个不会提这种傻逼需求的产品经理。

cjfeii 发表于 2016-07-21 18:04

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]
查看完整版本: SIGKILL 和 SIGSTOP 信号不能被捕捉的问题?