یک برنامهٔ 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' و '-' استفاده نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
توصیه کنم از تابع stat یا lstat با struct stat و فیلد st_mode استفاده کنی تا نوع فایل (دایرکتوری یا عادی)، اندازه در st_size و مجوزها را استخراج کنی. برای تشخیص نوع از ماکروهای S_ISDIR و S_ISREG استفاده کن و برای ساخت رشتهٔ مجوزها از بیتهای S_IRUSR/S_IWUSR/S_IXUSR و متناظرهای گروه و دیگران بهره ببر. مقدار بازگشتی تابع را بررسی کن و در صورت خطا با perror پیامی مناسب چاپ کن؛ اگر میخواهی به لینکها هم توجه کنی، از lstat استفاده کن تا خود لینک بررسی شود. آرگومانهای خط فرمان را اعتبارسنجی کن و مسیر را به تابع stat بده تا نتیجه را چاپ کند.
گزارش