0
A
回答
2
调用abort
函数会导致程序被终止。因此,abort
不会返回。
2
许多C库函数永远不会返回给调用者:
exit()
终止程序,提供了一个退出状态。abort()
终止程序并显示错误消息。longjmp()
将控制转移回到由相应setjmp()
汇编代码要么保存分支点直接从返回地址不同的地址或进行系统调用终止该程序。
1
说:“永远不会返回”必须无条件做这五两件事之一的功能:
- 进入无限循环(
for(;;);
) - 执行“控制的非局部转移”,使得一些其他函数似乎返回(
longjmp
,swapcontext
) - 调用导致操作系统至少终止当前执行线程的“系统调用”(
pthread_exit
,_exit
,reboot
) - 执行某种禁止或无效的机器操作(无效的指令,访问映射的内存等),再次导致操作系统终止进程
- 调用,它上面的东西一个其他一些功能。
abort
通常是5-> 3,4一些组合,并作为最后的手段1,因为其合同终止进程后事情都已经走了可怕的错误:它不是出了问题它尝试的第一件事(通常是kill(getpid(), SIGABRT)
)将不起作用。
在较低的层次上,我们可以谈论一个“执行线程”究竟是什么,操作系统如何设置它们并将它们关闭,以及操作系统本身是如何由引导加载程序调用的程序,如果你以正确的方式眯起来,“运行程序”只是动态地修改操作系统的代码,以包含程序的代码,然后跳转到该程序。但也许你不希望我在这个答案框中放弃整个操作系统课程。
+0
感谢您的详细解释,但@dbush的回答非常简短。 – adarsh
相关问题
- 1. php函数再次返回函数
- 2. 如何返回0并终止函数?
- 3. 如何返回在SQL Server ISNULL函数不止一个值
- 4. 如何返回一个函数,然后再调用它?
- 5. 从函数返回函数而不调用返回函数
- 6. 如何禁止函数返回R中的“Null”?
- 7. 如何从函数中返回数据?
- 8. 如何返回函数?
- 9. Javascript调用函数,不要再调用它,直到它返回
- 10. “OBJECT_NAME”函数不再返回对象的名字
- 11. RavenDB指数不再返回结果
- 12. jQuery $ .get不再返回数据
- 13. .NET Webservice不再返回JSON数据
- 14. 如何标记返回类型不返回的函数?
- 15. 返回deferred.done,不从函数返回
- 16. PHP函数'返回'不返回值
- 17. 如何从jQuery函数中返回值?
- 18. 如何从lambda函数中返回?
- 19. PHP:防止函数返回值?
- 20. 函数mysql_fetch_row返回NULL,禁止登录
- 21. 停止具有“返回”的tkinter函数
- 22. 再回到事件处理函数返回未定义
- 23. JavaScript中的touchstart不再返回TouchList
- 24. 如何等待回调函数返回?
- 25. 高阶函数返回函数什么都不返回
- 26. 如何在Scala中定义函数,返回自己返回
- 27. 如何从SP返回的函数中返回值?
- 28. 如何防止这个clojure函数返回一个列表
- 29. C函数不返回
- 30. 递归函数不返回
操作系统神奇。 'abort'将控制权交给操作系统,操作系统终止您的进程 – litelite
因为它关闭了程序。会有什么回报? – AntonH
exit()函数永远不会返回(如果你使用C99和C11标准,也不使用'_Exit()'或'quick_exit()',也不会返回POSIX中的'_exit()')。 –