یک برنامهٔ C بنویسید که نام یک فایل یا دایرکتوری را از آرگومان‌های خط فرمان بگیرد و با استفاده از تابع stat اطلاعات نوع (فایل/دایرکتوری)، اندازه به بایت و مجوزهای دسترسی را به صورت نمادی مثل "rwxr-xr-x" چاپ کند.

3.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:03

0.0

برای حل این سوال از هدر sys/stat.h و تابع stat یا lstat استفاده کنید: struct stat را پر کنید و با بررسی فیلد st_mode و ماکروهای S_ISDIR/S_ISREG نوع را تعیین کنید و با عملگرهای بیتی روی بیت‌های S_IRUSR، S_IWUSR، S_IXUSR و معادل‌های گروه و دیگران رشتهٔ مجوزها را بسازید. حتماً مقدار بازگشتی stat را بررسی کنید و در صورت خطا از perror پیام مناسبی چاپ کنید؛ برنامه را با gcc کامپایل کنید و برای تولید رشتهٔ مجوز می‌توانید از یک حلقه یا نگاشت ساده بیت‌ها به کاراکترهای 'r','w','x' و '-' استفاده نمایید.

توسط پژوهشگر در 220 روز قبل ساعت 02:03
دسته بندی ها: C for beginner
nima در 220 روز قبل ساعت 11:05

توصیه کنم از تابع stat یا lstat با struct stat و فیلد st_mode استفاده کنی تا نوع فایل (دایرکتوری یا عادی)، اندازه در st_size و مجوزها را استخراج کنی. برای تشخیص نوع از ماکروهای S_ISDIR و S_ISREG استفاده کن و برای ساخت رشتهٔ مجوزها از بیت‌های S_IRUSR/S_IWUSR/S_IXUSR و متناظرهای گروه و دیگران بهره ببر. مقدار بازگشتی تابع را بررسی کن و در صورت خطا با perror پیامی مناسب چاپ کن؛ اگر می‌خواهی به لینک‌ها هم توجه کنی، از lstat استفاده کن تا خود لینک بررسی شود. آرگومان‌های خط فرمان را اعتبارسنجی کن و مسیر را به تابع stat بده تا نتیجه را چاپ کند.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری