如果您正在編寫一個使用errno來指示錯誤類型的系統/庫調用的多線程應用程序,是否有安全的方法來使用errno?如果沒有,是否有其他方式可以指示發生的錯誤類型,而不僅僅是發生錯誤?有沒有辦法在多線程應用程序中安全地使用errno?
33
A
回答
34
如果您的標準庫是多線程感知的,那麼它可能有一個#define
,它將errno
更改爲返回線程本地錯誤返回值的函數調用。但是,要使用此功能,您一般需要包括<errno.h>
,而不是依靠extern
聲明。
我發現了一篇文章Thread-safety and POSIX.1,它解決了這個問題。
16
man errno
說:
錯誤號是由ISO C標準 定義爲 int類型的修改的左值,並且不能明確地聲明 ; errno可能是一個宏。 errno 是線程局部的;將其設置爲一個 線程在任何其他線程中都不會影響其值 。
相關問題
- 1. 有沒有辦法讓phonegap應用程序更安全?
- 2. 有沒有辦法在多個線程中使用asyncio.Queue?
- 3. 有沒有辦法在我的應用程序中使用mstest
- 4. 有沒有辦法多線程的SqlDataReader?
- 5. 線程安全應用程序中的線程安全
- 6. 在多線程應用程序中使用非線程安全的DLL
- 7. 有沒有辦法在Java應用程序中完全禁用RMI?
- 8. 有沒有辦法知道我的應用程序目前有多少安裝?
- 9. 在使用boost的多線程C++程序中,有沒有辦法獲得指向當前線程的指針?
- 10. 在多線程應用程序中使用LinkedHashMap的get()方法是否安全
- 11. 有沒有辦法讓所有的應用程序安裝在用戶的iPhone?
- 12. GUI在多線程應用程序的Wxwidgets中沒有響應
- 13. MSVC errno線程安全
- 14. 有沒有辦法在python中重新使用線程工作?
- 15. 有沒有辦法將線程安全地作爲參數傳遞?
- 16. 有沒有辦法讓一個多客戶端服務器應用程序不使用多個線程?
- 17. 有沒有辦法允許Delphi應用程序使用Hazelcast?
- 18. iPhone應用程序中的安全漏洞有多安全?
- 19. 有沒有辦法在Blue Prism中「激活」html應用程序?
- 20. 有沒有辦法在應用程序中查找對象?
- 21. 有沒有辦法在javaFX應用程序中集成html IFrame
- 22. 有沒有辦法在ClickOnce應用程序中重置IsFirstRun?
- 23. 有沒有辦法找出應用程序安裝了多長時間
- 24. 有沒有辦法在C#中將代碼標記爲非線程安全?
- 25. 有沒有辦法在Windows 10通用應用程序中使用restsharp?
- 26. 有沒有辦法將PKI用戶證書安裝到HTA應用程序中?
- 27. 有沒有辦法遠程查看Swing應用程序?
- 28. 有沒有辦法在.NET Framework 2中使用C#應用程序中的linq?
- 29. 有沒有辦法在JVM中選擇性地調試單個應用程序(或幾個應用程序)?
- 30. 在iOS應用程序中調用「祕密」URL有多安全?
謝謝!在/usr/include/bits/errno.h中的快速檢查證實,在我的Ubundu機器上,使用線程時,errno確實被定義爲per-thread。 – 2009-01-16 08:04:36