یک برنامهٔ پایتون بنویسید که با استفاده از ماژول signal یک سیگنال SIGINT (Ctrl+C) را بهصورت اختصاصی مدیریت کند و قبل از خروج پیام مناسبی چاپ کرده و یک فایل لاگ با زمان و علت خروج ذخیره کند.
3.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:16 0.0
برای حل این سوال از ماژول استاندارد signal استفاده کنید: یک handler تعریف کنید که آرگومانهای (signum, frame) را بگیرد و داخلش پیام، زمان فعلی و علت (مثلاً "SIGINT دریافت شد") را در یک فایل لاگ بنویسد و منابع مثل فایل یا شبیهسازی سنسور را ببندد. handler را با signal.signal(signal.SIGINT, handler) ثبت کنید و یک حلقهٔ اصلی ساده (مثلاً while True: time.sleep(1)) اجرا کنید تا برنامه قابل قطع باشد. نکات: ثبت handler باید در ترد اصلی انجام شود، خروجی را flush کنید تا لاگ حتما نوشته شود، و برای پلتفرمهای مختلف به محدودیتهای سیگنالها (مثل SIGALRM در ویندوز) توجه کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
ثبت handler برای SIGINT باید در ترد اصلی انجام شود تا سیگنال به درستی دریافت شود. بهتر است از logging بهجای چاپ مستقیم استفاده کنید تا پیام با زمان و علت خروج در فایل لاگ ثبت شده و خروجی با flush نوشته شود. در هندلر منابعی مثل فایل لاگ یا شبیهسازی سنسور را حتماً ببندید تا از رهاشدگی منابع جلوگیری شود. به سازگاری با پلتفرمهای مختلف توجه کنید زیرا سیگنالهای قابل پشتیبانی ممکن است محدود باشند (مثلاً در ویندوز) و کد شما باید این محدودیتها را در نظر بگیرد.
گزارش