我正在使用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. 獲取塊設備的大小Linux/Windows
- 4. BigInsights Windows上的KnoxShell示例
- 5. 如何在Windows中創建「塊設備」
- 6. 在不同設備上顯示不同設備上的NSDate
- 7. TDS NOMAD windows CE5.0設備連接兩個以上的USB設備
- 8. Mmap Mac OS X上的塊設備?
- 9. 觸摸設備上的jQuery UI滑塊
- 10. CSS。移動設備上的中心塊
- 11. 枚舉Windows Mobile設備上的時區
- 12. 設備上的Windows Phone推送通知
- 13. Windows上的便攜式設備路徑
- 14. Windows 8上的藍牙SPP設備
- 15. Windows Phone WCF EndpointNotFound設備上的異常
- 16. Windows Phone 8 AdControl未在我的設備上顯示
- 17. iOS iAd設備上的測試廣告示例屏幕截圖
- 18. boto3顯示實例上的下一個可用設備名稱
- 19. 顯示CAknInformationNote設備上
- 20. 地圖上顯示設備
- 21. 獲取示例設備令牌
- 22. Android:UPnP設備掃描程序示例
- 23. 在移動設備上顯示時在右上方顯示內容塊
- 24. Windows商店應用程序8.1顯示Windows 10設備上的黑屏
- 25. 在mtd塊設備上寫入
- 26. 設備管理API示例:在模擬器上正常工作設備上的NoSuchMethod錯誤
- 27. Android設備上查看顯示舉例Z訂購
- 28. 在Android設備/模擬器上運行Google Glass GDK示例
- 29. 示例如何使用PHP從Android設備上傳
- 30. 如何在設備上運行Google Glass GDK示例?
COM1(代表RS-232)是一個字符設備。 \\。\ X:表示dis X,它是一個塊設備。 –