سؤال

كيف يمكنني الحصول على أذونات وصول مالك الملف باستخدام STAT من SYS/STAT.H باستخدام C ++ في Kubuntu Linux؟

حاليا ، أحصل على نوع الملف مثل هذا:

  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

هل كانت مفيدة؟

المحلول

  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;

نصائح أخرى

يتم إعطاء بت أذونات المالك بواسطة الماكرو S_IRWXU من <sys/stat.h>. سيتم ضرب القيمة بمقدار 64 (0100 Octal) ، وبالتالي:

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

سيؤدي ذلك إلى طباعة قيمة بين 0 و 7. هناك أقنعة مماثلة للمجموعة (S_IRWXG) و اخرين (S_IRWXO) ، مع نوبات 3 و 0 على التوالي. هناك أيضا أقنعة منفصلة لكل من البتات الإذن الفردية الـ 12.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top