2

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 のファイル モード ビットを使用する必要があることはわかっていますが、その方法がわかりません。sys/stat.h を参照してください

4

2 に答える 2

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;
于 2009-09-08T12:10:13.353 に答える
1

所有者許可ビットは、 のマクロによって与えられS_IRWXUます<sys/stat.h>。値は 64 (8 進数の 0100) で乗算されるため、次のようになります。

cout << "Owner mode: " << ((results.st_mode & S_IRWXU) >> 6) << endl;

これにより、0 ~ 7 の値が出力されます。グループ ( S_IRWXG) とその他 ( S_IRWXO) には、それぞれ 3 と 0 のシフトを持つ同様のマスクがあります。12 個の許可ビットごとに個別のマスクもあります。

于 2009-09-08T12:07:46.403 に答える