我正在使用Linux,macOS和Windows上的Posix stat()
函數,並且希望用不同的設備試用它,以查看結果。支持某些類型,例如套接字和FIFO在Windows上不存在,但我想檢查至少塊和字符設備。我發現AUX
(和其他一些類似的)是字符設備,但是我找不到默認情況下在Windows上可用的任何塊設備。有人可以請示例嗎?Windows上的塊設備示例
回答
Windows不是POSIX操作系統,不支持stat
。它有一個類似的功能,_stat
,它試圖模擬的功能。然而,即使Windows確實有塊設備的概念,Windows實現中也沒有S_IFBLK
(塊設備)標誌;但是,如果您在stat.h
看,你會看到只有以下模式標誌的支持:
#define _S_IFMT 0xF000 // File type mask
#define _S_IFDIR 0x4000 // Directory
#define _S_IFCHR 0x2000 // Character special
#define _S_IFIFO 0x1000 // Pipe
#define _S_IFREG 0x8000 // Regular
#define _S_IREAD 0x0100 // Read permission, owner
#define _S_IWRITE 0x0080 // Write permission, owner
#define _S_IEXEC 0x0040 // Execute/search permission, owner
從這一點可以斷定,你所要求的是不可能的。
的確,_stat("C:")
因ENOENT
而失敗,而_stat("\\\\.\\C:")
因EINVAL
而失敗。
是的,關於丟失標誌並因此不支持的設備的好處。從列表中我看到FIFOs(在Win:管道上)受到支持,但是。你可能有一個總是存在於系統中的管道的例子嗎? –
當然,你可以使用'_stat(「\\\\。\\ pipe \\ eventlog」)統計事件日誌管道' – rustyx
Windows上常見的'stat'實現僅限於文件系統。它們通過打開句柄並調用'GetFileInformationByHandle'或更新的'GetFileInformationByHandleEx'來實現,它最終通過'NtQueryVolumeInformationFile'(例如'FileFsVolumeInformation')和'NtQueryInformationFile'(例如'FileAllInformation')查詢文件系統信息。大多數非文件系統設備不支持查詢的信息類,所以'stat'將失敗。值得注意的是「\\。\ PIPE」(原生NT代碼中的「\ Device \ NamedPipe」)是一個基本的文件系統設備。 – eryksun
- 1. 在Windows Mobile 6.1設備上運行directx SDK示例
- 2. Windows 10設備上的System.ExecutionEngineException
- 3. BigInsights Windows上的KnoxShell示例
- 4. 如何在Windows中創建「塊設備」
- 5. 在不同設備上顯示不同設備上的NSDate
- 6. CSS。移動設備上的中心塊
- 7. 觸摸設備上的jQuery UI滑塊
- 8. Windows 8上的藍牙SPP設備
- 9. 設備上的Windows Phone推送通知
- 10. Windows上的便攜式設備路徑
- 11. 枚舉Windows Mobile設備上的時區
- 12. iOS iAd設備上的測試廣告示例屏幕截圖
- 13. 地圖上顯示設備
- 14. Windows Mobile設備屏幕顯示問題
- 15. 在移動設備上顯示時在右上方顯示內容塊
- 16. 獲取示例設備令牌
- 17. Windows商店應用程序8.1顯示Windows 10設備上的黑屏
- 18. 在mtd塊設備上寫入
- 19. 設備管理API示例:在模擬器上正常工作設備上的NoSuchMethod錯誤
- 20. 無法在Android設備上運行React-Native示例代碼
- 21. Android設備上查看顯示舉例Z訂購
- 22. 的Android 4.0.3 CTS名單設備上顯示設備不可用
- 23. 在Windows Mobile設備上使用Ruby
- 24. Windows設備不再識別Android設備
- 25. 爲Windows Phone設備
- 26. Android設備上的GCM演示
- 27. 的MKMapView上沒有顯示設備
- 28. Windows中的虛擬設備
- 29. 如何使用Windows CE設備的C++ MFC顯示設備鍵盤?
- 30. 在緊湊框架中的Windows Mobile設備上獲取設備ID?
COM1(代表RS-232)是一個字符設備。 \\。\ X:表示dis X,它是一個塊設備。 –