我正在Linux,macOS和Windows上使用Posix stat()
功能,想要尝试使用不同的设备,以查看结果。支持某些类型,例如Windows上不存在套接字和FIFO,但我想检查至少块和字符设备。我发现AUX
(以及其他一些类似的设备)是字符设备,但我找不到默认情况下Windows上可用的任何块设备。有人可以建议一个例子吗?
答案 0 :(得分:4)
Windows不是POSIX OS,不支持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
而失败。