[英]How does abort function never return?
我在阅读abort()
系统调用的手册页,就遇到了这个问题。
返回值
abort()
函数从不返回。
我想知道这怎么可能?
调用abort
功能导致程序终止。
因此, abort
不会返回。
许多C库函数从不返回调用者:
exit()
终止程序,提供退出状态。
abort()
使用错误消息终止程序。
longjmp()
将控制权转移回由相应setjmp()
保存的点
汇编代码或者直接跳转到与返回地址不同的地址,或者进行系统调用以终止程序。
“永不返回”的函数必须无条件地执行以下五个操作之一:
for(;;);
) longjmp
, swapcontext
) pthread_exit
, _exit
, reboot
) 通常, abort
是5-> 3、4和最后一个选择1的某种组合,因为它的合同是在发生严重错误之后终止该过程:尝试第一件事并不是没有问题的(通常是kill(getpid(), SIGABRT)
)不起作用。
在较低的级别,我们可以讨论什么实际上是“执行线程”,操作系统如何设置它们并将其拆除,以及操作系统本身是如何由引导加载程序调用的程序,以及是否斜视按照正确的方式,“运行程序”只是动态地修改OS的代码以包含该程序的代码,然后跳转到该代码……但是也许您不希望我在Windows 2000中放弃整个操作系统课程。这个答案框。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.