使用C ++和stat获取所有者的访问权限

时间:2009-09-08 11:51:48

标签: c++ linux file mode stat

如何在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

2 个答案:

答案 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个单独的权限位中的每一个都有单独的掩码。