最近看到有人写了文章说对unix下的signal可以自定义信号,抱着怀疑的态度,进行了测试,结果是不可以自定义signal(在不重编译系统源码的基础上)。仔细分析一下,内核如果对数据进行控制,那么校验判断之下一定是不过的。这在测试的时候使用kill,raise的时候可以得到判断,返回值都是错误的,因而是没有发送出去,自然就无法收到。查看linux的sys_signal源码确实有范围判断,在里面同时将SIGKILL和SIGSTOP这2个信号进行排除,因为不允许用户进行捕获。至于,自定义的信号值在调用signal的时候是否成功,应该要依旧于系统内核的实现方式来判断,在linux下应该是失败的。
其实在unix中有2个信号提供给用户使用,是SIGUSR1,SIGUSR2。可以使用这2个进行一定的操作。 |
浅谈signal自定义信号
最新推荐文章于 2025-07-11 23:20:31 发布