wan*_*o15 3 c unix linux signals segmentation-fault
我注册了一个处理程序SIGSEGV
,fprintf
用来打印一些消息然后退出.该过程打印消息但未退出.之前它被阻止了exit()
.
我不能exit()
用来在处理程序中正常完成这个过程吗?
void sigsegv__handler(){
fprintf(stderr, "SIGSEGV , TID: %d,PID: %d\n", TEST_ID, getpid());
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
我不能
exit()
用来正常完成处理程序中的进程吗?
exit()
不应该从信号处理程序调用,因为它不能保证是异步信号安全的.使用_exit()
,_Exit()
或abort()
改为.
也就是说, printf()
不应该从信号处理程序调用适用于同样理由的原因exit()
.
有关异步信号安全功能的完整列表,请查看此页面:
此外,当分段违规发生时,程序不稳定,甚至破坏,堆栈可能会被粉碎,因此无法保证从那一刻开始可以调用任何东西.
归档时间: |
|
查看次数: |
376 次 |
最近记录: |