首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >mingw中的stat()不能正常工作

mingw中的stat()不能正常工作
EN

Stack Overflow用户
提问于 2012-04-10 17:45:46
回答 1查看 2.8K关注 0票数 0

我创建了一个简单的代码:

代码语言:javascript
代码运行次数:0
运行
复制
int main(int argc, char *argv[]) 
{
    struct stat eStat;
    int result;
    struct stat eStat2;
    int result2;

    result = stat("g:/temp/dvd", &eStat);
    printf("result=%d | eStat.st_mode=%d | S_IFMT=%d | S_IFDIR=%d\n",result,eStat.st_mode,S_IFMT,S_IFDIR);

    if((eStat.st_mode & S_IFMT) == S_IFDIR)
        printf("It is a dir!!!\n");
    else
        printf("not a dir\n");

    result2 = stat("g:\\temp\\test.txt", &eStat2); 
    printf("test.txt result2=%d | eStat2.st_mode=%d | S_IFMT=%d | S_IFDIR=%d\n",result2,eStat2.st_mode,S_IFMT,S_IFDIR);

    return 0;
}

然后我用VS2010(Windows7, C++)编译这段代码,输出:

代码语言:javascript
代码运行次数:0
运行
复制
result=0 | eStat.st_mode=16895 | S_IFMT=61440 | S_IFDIR=16384               
It is a dir!!!                    
test.txt result2=0 | eStat2.st_mode=33206 | S_IFMT=61440 | S_IFDIR=16384

我用Linux(Debian stable, gcc)编译这段代码,输出如下:

代码语言:javascript
代码运行次数:0
运行
复制
result=0 | eStat.st_mode=16877 | S_IFMT=61440 | S_IFDIR=16384      
It is a dir!!!                 
test.txt result2=0 | eStat2.st_mode=33188 | S_IFMT=61440 | S_IFDIR=16384  

当我在mingw(gcc) on Windows7中编译时,输出:

代码语言:javascript
代码运行次数:0
运行
复制
result=0 | eStat.st_mode=6 | S_IFMT=61440 | S_IFDIR=16384           
not a dir                
test.txt result2=0 | eStat2.st_mode=6 | S_IFMT=61440 | S_IFDIR=16384

当我用mingw编译时,为什么st_mode总是显示6

EN

回答 1

Stack Overflow用户

发布于 2012-07-30 16:28:53

为了使stat()MinGW下正常工作,您更改了哪些头文件?我怀疑我从测试中得到的结果

代码语言:javascript
代码运行次数:0
运行
复制
stat(path, &stbuf) == -1

但我不能确定,因为我在递归目录下降中使用它,并且我不知道可访问性测试是否(1)在下降中的那一点是正确的,或者(2)检索正确的值来检查可访问性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10086425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档