یک برنامهٔ C بنویسید که با استفاده از توابع read و write در <unistd.h>، یک فایل ورودی را به فایل خروجی کپی کند (نام فایلها از آرگومانهای خط فرمان خوانده شوند).
3.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:11 0.0
برای حل، فایل ورودی را با open(O_RDONLY) و فایل خروجی را با open(O_WRONLY|O_CREAT|O_TRUNC, 0644) باز کنید، سپس در حلقهای با استفاده از read از توصیفگر فایل ورودی بخوانید و با write به توصیفگر فایل خروجی بنویسید تا زمانی که read صفر برگرداند. از هدرهای مناسب مانند <unistd.h>، <fcntl.h> و <stdio.h> استفاده کنید و همیشه مقادیر بازگشتی را بررسی کنید (ssize_t)، فایلها را در پایان close کنید و در صورت وجود خطا با perror پیام مناسب چاپ کنید. نکات: از بافر مثلاً 4096 بایت استفاده کنید، به نوشتن جزئی (partial write) توجه کنید و در صورت نیاز تا نوشتن همهٔ بایتها دوباره write را فراخوانی کنید؛ این مثال نمونهای ساده از مفاهیم پایهٔ برنامهنویسی سیستم/ورودی-خروجی در C است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای ایمنی بیشتر مقدار بازگشتی read و write را به دقت بررسی کنید و در حلقه تا تکمیل کل بافر اقدام به نوشتن کنید. همچنین با مسألهٔ partial write روبهرو خواهید شد و باید هر بار تا پایان یافتن کل تعداد بایتها دوباره write را فراخوانی کنید. پیش از بازکردن فایلها مقدار argc را بررسی کنید و آرگومانهای ورودی/خروجی را با perror یا خطای مناسب گزارش دهید. از بافر حدوداً 4096 بایت استفاده کنید و پس از پایان کار، هر دو فایل را با close ببندید.
گزارش