如何檢查給定文件描述符是否有效?如果可用,我想寫信給fd=3
;否則,我想寫入標準輸出。我知道我可以用try-except聲明包裝每個os.write
調用,但我想提前知道fd=3
是否可寫。檢查文件描述符是否有效
回答
您可以使用os.fstat
來確定文件描述符在每次寫入之前是否有效,但是您需要將其封裝在try /中,因爲無效的文件描述符會引發OSError
。嘗試/除了創建自己的寫入功能可能會更好。
def write(data, fd=3):
try:
os.write(fd, data)
except OSError:
sys.stdout.write(data)
如何試圖os.write
到fd=3
一旦在啓動(一try
內 - except
塊),並更改基礎上的成功,所有的後續行爲?
這樣您就不必在try
- except
中包裝每一個電話。當然,如果fd=3
在問題的中間停止有效(例如,如果它是從另一端關閉的管道),則會崩潰。
我會嘗試調用'os.fstat'並檢查模式位而不是'os.write',以避免寫入垃圾到fd的副作用,否則是的,嘗試/除了是這個問題的完美成語。 「更好地請求寬恕等等」 –
@Chris Farmiloe:'os.fstat'會檢測到破損的管道嗎? – NPE
是的,會提出「關閉文件操作」ValueError,我相信 –
- 1. Linux內核 - 檢查是否有文件描述符
- 2. 檢查IniFile描述符是否打開
- 3. Linux系統:檢查是否文件描述符可以讀取
- 4. 檢查套接字文件描述符是否可用?
- 5. 是否EXEC保存文件描述符
- 6. fopen是否創建文件描述符?
- 7. 如何檢查文件描述符是否有可用的數據?
- 8. 如何檢查文件是否仍然存在使用文件描述符
- 9. 如何檢查Expressionengine 2中的文件描述是否爲空?
- 10. 如何檢查存儲在變量中的給定文件描述符是否仍然有效?
- 11. 如何確定文件描述符是否可查找?
- 12. 檢查Localizable.strings文件是否有效
- 13. 檢查文件名是否有效
- 14. 設備文件的文件描述符的有效性
- 15. 檢索文件描述符:: fstream的
- 16. 文件描述符飢餓和阻斷文件描述符
- 17. 確定文件結構(描述文件描述符)是否爲'特殊文件'(即塊/字符設備)
- 18. 檢查字符串是否有效
- 19. 檢查是否有無效的符號
- 20. 檢查字符串是否有效文件名
- 21. 檢查文件是否是有效的pgp加密文件
- 22. 什麼是文件描述符?
- 23. 關閉原始文件描述符後,重複的描述符文件是否關閉?
- 24. 什麼是關閉一個無效的文件描述符呢?
- 25. c strcpy文件描述符
- 26. webservice描述符文件
- 27. 關閉文件描述符
- 28. 創建文件描述符
- 29. Linux open()文件描述符
- 30. 實現文件描述符
謝謝,我將使用'os.fstat'。 – cpburnz