احصل على أذونات وصول المالك باستخدام C ++ و Stat
سؤال
كيف يمكنني الحصول على أذونات وصول مالك الملف باستخدام 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.
لا تنتمي إلى StackOverflow