信号
文章平均质量分 87
sydyh43
这个作者很懒,什么都没留下…
展开
-
栈区数据被飞踩问题定位手段
1、栈溢出或者栈数据被踩时,继续运行就会出现segmentation fault。可以尝试着接管SIGSEGV信号,在信号处理函数中保存一些出现异常时候的信息。2、基于栈溢出场景,栈空间被破坏,也就没法使用栈区,当然就没法执行SIGSEGV信号的处理函数。因此需要开辟额外的空间用于栈空间使用,系统提供了sigaltstack接口。2.1、开辟第二栈区的代码void create_alt_stack(void){ stack_t sigstack; memset(&sigsta原创 2022-01-25 20:07:09 · 3039 阅读 · 0 评论 -
信号(signal)使用的疑问
信号信号是软件范畴中一个类似于硬件中断的概念,但它不能像硬件中断那样直接打断程序的运行,目标进程对信号的处理只会发生在该进程被重新调度执行,也就是从内核态切换到用户态的时候。由于用户态和内核态的切换是很频繁的,因而信号通常能很快地得到目标进程的响应,看起来就跟中断的效果一样。在目标进程执行信号处理函数期间,有可能收到内核递送来的其他信号。如果新到来的信号和当前正在处理的信号是同样的信号(信号值相同的信号就是同样的信号),目标进程这时跳转去执行新的信号,将会形成信号处理函数的嵌套,这就要求信号处理函数原创 2021-08-15 20:41:29 · 380 阅读 · 0 评论