红联Linux门户
Linux帮助

文件权限问题

发布时间:2009-09-22 15:01:25来源:红联作者:kgduu
#include
#include
#include

int main()
{
struct stat buf;

if (stat("./test.txt", &buf) == -1) {
perror("fail to stat");
exit(1);
}

if ( buf.st_mode & S_IRGRP != 0)
printf("user of the group can read\n");
else
printf("user of the group can't read\n");

return 0;
}
程序运行结果为:user of the grouop can't read
但是在终端上用命令ls -l test.txt时,显示
-rwxr----- 1 wl wl 12 2009-09-22 09:42 test.txt
照理说应该显示user of the group can read.
这是为什么呢?
文章评论

共有 3 条评论

  1. kgduu 于 2009-09-23 10:22:55发表:

    在gdb 中查看buf.st_mode = 33268 转换在十六进制后变为81F4,转换成二进制就是1000000111110100,和1位与就是0了,所以输出user of the group can't read

  2. kgduu 于 2009-09-23 09:48:13发表:

    终于发现问题了
    看来是运算优先级的问题,
    if ( (buf.st_mode & S_IRGRP) != 0) 这样就行了
    哈哈哈.......

  3. kgduu 于 2009-09-22 20:41:58发表:

    咋就没人回复呢