如何在Kubuntu Linux中使用C ++使用sys / stat.h中的stat获取文件所有者的访问权限?
目前,我得到的文件类型如下:
struct stat results;
stat(filename, &results);
cout << "File type: ";
if (S_ISDIR(results.st_mode))
cout << "Directory";
else if (S_ISREG(results.st_mode))
cout << "File";
else if (S_ISLNK(results.st_mode))
cout << "Symbolic link";
else cout << "File type not recognised";
cout << endl;
我知道我应该使用t_mode的文件模式位,但我不知道如何。 See sys/stat.h
答案 0 :(得分:7)
struct stat results;
stat(filename, &results);
cout << "Permissions: ";
if (results.st_mode & S_IRUSR)
cout << "Read permission ";
if (results.st_mode & S_IWUSR)
cout << "Write permission ";
if (results.st_mode & S_IXUSR)
cout << "Exec permission";
cout << endl;
答案 1 :(得分:1)
所有者权限位由来自S_IRWXU
的宏<sys/stat.h>
提供。该值将乘以64(0100八进制),因此:
cout << "Owner mode: " << ((results.st_mode & S_IRWXU) >> 6) << endl;
这将打印出0到7之间的值。组(S_IRWXG
)和其他(S_IRWXO
)有类似的掩码,移位分别为3和0。 12个单独的权限位中的每一个都有单独的掩码。