保證在atexit註冊的函數總是會在正常程序終止時被調用嗎? (我在FreeBSD遇到一個場景,即使程序正常終止,我用atexit註冊的函數也不會被調用。用atexit()註冊的函數沒有被調用
1
A
回答
2
否。首先,如果atexit
返回非0值,則不會調用該函數。其次,如果在它之前註冊的函數沒有正常返回,它將不會被調用。
+0
註冊函數按註冊的相反順序調用。詹姆斯,你可能是指「如果一個函數註冊後沒有正常返回」。 – 2011-04-15 09:52:11
+0
@ Bill Evans是的。我正在考慮函數被調用的順序。 – 2011-04-15 11:49:41
1
你稱之爲「正常終止」是什麼?
Unix和C99具有函數_Exit(POSIX和C99)和_exit(僅POSIX),它們允許以任何你想要的狀態終止一個程序,而無需運行atexit處理程序。我知道其他情況下,他們沒有完全運行的情況下,就會陷入「異常終止」時段。
相關問題
- 1. 何時用atexit()註冊的函數調用
- 2. 爲什麼我的spl_autoload_register註冊函數沒有被調用?
- 3. 檢索對通過atexit註冊的函數的引用()
- 4. 在系統調用之前將被調用的註冊函數
- 5. 函數沒有被調用
- 6. 函數沒有被調用
- 7. 何時使用setTimeout註冊的函數被調用?
- 8. 充分利用()使用atexit註冊的函數中退出狀態
- 9. KeyboardProc回調函數沒有被調用?
- 10. jsonp回調函數沒有被調用
- 11. SSL_CTX_set_tlsext_servername_callback回調函數沒有被調用
- 12. 在已註冊的atexit函數中獲取錯誤追蹤
- 13. 如何獲得Python3中已註冊的atexit函數列表?
- 14. qbXMLRP2e沒有被註冊
- 15. 找出沒有被調用的函數
- 16. swift 3沒有被調用的函數
- 17. 我的keyPressed函數沒有被調用
- 18. 的atexit()函數
- 19. 春天SimpleThreadScope註冊,但沒有找到時AbstractBeanFactory.doGetBean()被調用
- 20. 註冊頁面沒有註冊用戶
- 21. 在atexit()的Execv註冊問題()
- 22. 儘管被調用函數沒有被調用?
- 23. 如何在doBackground被調用時註冊函數和gearmanworker?
- 24. jQuery函數沒有被調用按鈕
- 25. Jquery image Zoomer函數沒有被調用
- 26. Highcharts點擊函數沒有被調用?
- 27. 已重載==函數沒有被調用
- 28. JavaScript函數沒有被調用正確
- 29. Mousemove函數沒有被調用
- 30. pthread_key_create析構函數沒有被調用
調用'_exit(2)'而不是'exit(3)'的應用程序將繞過退出處理程序,它可能會像程序外部的正常終止一樣。 – sarnold 2011-04-15 09:07:30