C windows中的lstat()替代方案是什么?
在linux中,当对断开的链接文件使用C windows中的lstat()替代方案是什么?,c,stat,C,Stat,在linux中,当对断开的链接文件使用stat()时,它会因-1而失败。因此,我使用了成功的lstat() 对于windows中的相同情况,\u stat()因快捷方式中断而失败,但windows中没有\u lstat()。请帮助在windows中找到lstat()的替代选项。或者可能(如果我理解stat和lstat正确)。从文件中引用: 符号链接行为如果路径指向符号链接,函数将返回符号链接的属性 嘿ustat()或stat()在断开的快捷方式上也可以正常工作。这就是原因,在windows中没有
stat()
时,它会因-1
而失败。因此,我使用了成功的lstat()
对于windows中的相同情况,\u stat()
因快捷方式中断而失败,但windows中没有\u lstat()
。请帮助在windows中找到lstat()
的替代选项。或者可能(如果我理解stat
和lstat
正确)。从文件中引用:
符号链接行为如果路径指向符号链接,函数将返回符号链接的属性
嘿ustat()或stat()在断开的快捷方式上也可以正常工作。这就是原因,在windows中没有类似lstat(UNIX)的替代方案
在Unix中,stat()会因断开的链接而失败,因此会提供lstat来修复此问题
谢谢大家的帮助 接受的答案不能提供完整的stat
等效值。stat
结构定义为
struct stat{
包含文件的设备的dev_t st_dev;/*ID*/
ino_t st_ino;/*inode编号*/
模式\u t st\u模式;/*保护*/
nlink\u t st\u nlink;/*硬链接数*/
uid\u t st\u uid;/*所有者的用户ID*/
gid_t st_gid;/*所有者的组ID*/
dev_t st_rdev;/*设备ID(如果是特殊文件)*/
off_t st_size;/*总大小,以字节为单位*/
blksize\u t st\u blksize;/*文件系统I/O的块大小*/
blkcnt_t st_区块;/*分配的512B区块数量*/
time\u t st\u atime;/*上次访问的时间*/
上次修改的时间*/
time\u t st\u ctime;/*上次状态更改的时间*/
};
但是GetFileAttributes..
不提供任何所有者信息(它返回WIN32_FIND_数据对象中的数据)。如果您需要该所有者信息,看起来可以使用GetSecurityInfo
[1]
[1] 我假设这个问题和这个答案是在MSVC的运行库中提出的?不管怎样,谢谢你发布这个答案,因为它让我不想知道为什么有人会不厌其烦地制作一个遵循快捷方式的\u stat()
,而不是制作一个不这样做的\u lstat()
。我的意思是,前者的工作量要大得多,在这一点上,任何足够聪明的人都应该有足够的时间在这个过程中意识到他们也在使后者成为必要。