#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.
这是为什么呢?
kgduu 于 2009-09-23 10:22:55发表:
在gdb 中查看buf.st_mode = 33268 转换在十六进制后变为81F4,转换成二进制就是1000000111110100,和1位与就是0了,所以输出user of the group can't read
kgduu 于 2009-09-23 09:48:13发表:
终于发现问题了
看来是运算优先级的问题,
if ( (buf.st_mode & S_IRGRP) != 0) 这样就行了
哈哈哈.......
kgduu 于 2009-09-22 20:41:58发表:
咋就没人回复呢