علامت

ساخت وبلاگ

آخرین نسخه این موضوع را می توان در سیگنال یافت.

رسیدگی به سیگنال قطع را تنظیم می کند.

از این روش برای خاموش کردن یک برنامه فروشگاه Windows 8. x استفاده نکنید ، مگر در سناریوهای آزمایش یا اشکال زدایی. راه های برنامه ای یا UI برای بستن یک برنامه فروشگاه Windows 8. x مطابق بخش 3. 6 الزامات صدور گواهینامه برنامه ویندوز 8 مجاز نیست. برای اطلاعات بیشتر ، به چرخه عمر برنامه (برنامه های Windows Store) مراجعه کنید.

نحو

مولفه های

مقدار سیگنال سیگ.

عملکرد عملکرد برای اجرای. پارامتر اول یک مقدار سیگنال است و پارامتر دوم یک زیر کد است که می تواند در هنگام پارامتر اول SIGFPE استفاده شود.

مقدار بازگشت

سیگنال مقدار قبلی عملکردی را که با سیگنال داده شده مرتبط است ، برمی گرداند. به عنوان مثال ، اگر مقدار قبلی عملکرد SIG_IGN باشد ، مقدار بازگشت نیز SIG_IGN است. مقدار بازگشت SIG_ERR نشان دهنده خطایی است. در این حالت ، Ero روی EINVAL تنظیم شده است.

برای کسب اطلاعات بیشتر در مورد کدهای بازگشت ، به ero ، _dosero ، _sys_errlist و _sys_nerr مراجعه کنید.

ملاحظات

عملکرد سیگنال یک فرآیند را قادر می سازد تا یکی از چندین روش برای کنترل سیگنال قطع از سیستم عامل را انتخاب کند. آرگومان SIG وقفه ای است که سیگنال به آن پاسخ می دهد. این باید یکی از ثابت های آشکار زیر باشد که در سیگنال تعریف شده است.

 

مقدار سیگشرح
سیگابرتخاتمه غیر طبیعی
سیگفخطای نقطه شناور
سیگیلآموزش غیرقانونی
غرق شدنسیگنال Ctrl+C
SIGSEGVدسترسی غیرقانونی ذخیره سازی
سجدهدرخواست خاتمه

اگر SIG یکی از مقادیر فوق نباشد ، از کنترل کننده پارامتر نامعتبر استفاده می شود ، همانطور که در اعتبار سنجی پارامتر تعریف شده است. اگر اجرای مجاز به ادامه باشد ، این عملکرد Ero را به EINVAL تنظیم می کند و SIG_ERR را برمی گرداند.

به طور پیش فرض ، سیگنال بدون در نظر گرفتن مقدار SIG ، برنامه فراخوانی را با کد خروجی 3 خاتمه می دهد.

SIGINT برای هیچ برنامه Win32 پشتیبانی نمی شود. هنگامی که یک وقفه Ctrl+C رخ می دهد ، سیستم عامل های Win32 یک موضوع جدید را تولید می کنند تا بطور خاص آن را قطع کنند. این می تواند باعث شود که یک برنامه تک رشته ای ، مانند یکی در یونیکس ، به چند رشته تبدیل شود و باعث رفتار غیر منتظره شود.

آرگومان FUNC آدرس یک کنترل کننده سیگنال است که شما می نویسید ، یا به یکی از ثابت های از پیش تعریف شده SIG_DFL یا SIG_IGN ، که در سیگنال نیز تعریف شده اند. اگر Func یک عملکرد باشد ، به عنوان کنترل کننده سیگنال برای سیگنال داده شده نصب می شود. نمونه اولیه کنترل کننده سیگنال به یک آرگومان رسمی ، SIG ، از نوع int نیاز دارد. سیستم عامل هنگام وقفه ، استدلال واقعی را از طریق SIG ارائه می دهد. آرگومان سیگنالی است که باعث وقفه شده است. بنابراین ، می توانید از شش ثابت مانیفست (که در جدول قبلی ذکر شده است) در کنترل کننده سیگنال خود استفاده کنید تا مشخص شود که چه وقفه ای رخ داده و اقدامات مناسب را انجام داده است. به عنوان مثال ، شما می توانید دو بار با سیگنال تماس بگیرید تا همان کنترل کننده را به دو سیگنال مختلف اختصاص دهید ، و سپس آرگومان SIG را در کنترل کننده آزمایش کنید تا بر اساس سیگنال دریافت شده اقدامات مختلفی انجام دهد.

اگر شما در حال آزمایش استثنائات نقطه شناور (SIGFPE) هستید ، عملکرد به عملکردی اشاره می کند که یک آرگومان دوم اختیاری را می گیرد که یکی از چندین ثابت مانیفست است-تعریف شده در float. h-از فرم fpe_xxx. هنگامی که یک سیگنال SIGFPE رخ می دهد ، می توانید مقدار آرگومان دوم را آزمایش کنید تا نوع استثناء نقطه شناور را تعیین کرده و سپس اقدامات مناسب انجام دهید. این آرگومان و مقادیر احتمالی آن پسوندهای مایکروسافت است.

برای استثنائات نقطه شناور ، هنگام دریافت سیگنال ، مقدار عملکرد دوباره تنظیم نمی شود. برای بهبودی از استثنائات نقطه شناور ، از سعی کنید/به جز بندها برای محاصره عملیات نقطه شناور استفاده کنید. همچنین می توان با استفاده از SETJMP با LongJMP بازیابی شد. در هر صورت ، فرآیند فراخوانی اعدام را از سر می گیرد و حالت شناور را از این فرآیند تعریف نشده می گذارد.

اگر کنترل کننده سیگنال بازگردد ، فرآیند فراخوانی بلافاصله پس از نقطه ای که سیگنال قطع را دریافت می کند ، اجرا را از سر می گیرد. این بدون در نظر گرفتن نوع سیگنال یا حالت عملیاتی صادق است.

قبل از اجرای عملکرد مشخص شده ، مقدار عملکرد روی SIG_DFL تنظیم می شود. سیگنال قطع بعدی همانطور که برای SIG_DFL شرح داده می شود ، درمان می شود ، مگر اینکه یک تماس مداخله کننده برای سیگنال در غیر این صورت مشخص شود. می توانید از این ویژگی برای تنظیم مجدد سیگنال ها در عملکرد نامیده استفاده کنید.

از آنجا که معمولاً روال های دستی سیگنال به طور غیر همزمان در هنگام وقفه نامیده می شوند ، ممکن است عملکرد سیگنال شما هنگامی که یک عملیات زمان اجرا ناقص و در حالت ناشناخته باشد ، کنترل خود را کنترل کند. لیست زیر محدودیت هایی را تعیین می کند که تعیین می کند از کدام توابع می توانید در روال دستی سیگنال خود استفاده کنید.

روال های سطح پایین یا stdio. h I/O را صادر نکنید (به عنوان مثال ، printf یا fread).

با روال های پشته یا روال روال استفاده نکنید که از روال های پشته استفاده می کند (به عنوان مثال ، MALLOC ، _STRDUP یا _PUPENV). برای اطلاعات بیشتر به MALLOC مراجعه کنید.

از هیچ عملکردی که یک تماس سیستم ایجاد می کند (به عنوان مثال ، _getCWD یا زمان) استفاده نکنید.

از LongJMP استفاده نکنید مگر اینکه وقفه در اثر استثناء نقطه شناور ایجاد شود (یعنی SIG SIGFPE است). در این حالت ، ابتدا با استفاده از تماس به _fpreset ، بسته نقطه شناور را مجدداً مجدداً مجدداً مورد استفاده قرار دهید.

از هرگونه روال پوشش استفاده نکنید.

در صورت قرار دادن استثناء SIGFPE با استفاده از عملکرد ، یک برنامه باید حاوی کد نقطه شناور باشد. اگر برنامه شما دارای کد نقطه شناور نیست و به کد انتقال سیگنال کتابخانه زمان اجرا نیاز دارد ، فقط یک دوتایی بی ثبات را اعلام کنید و آن را به صفر برسانید:

سیگنال های Sigill و Sigterm در ویندوز تولید نمی شوند. آنها برای سازگاری ANSI گنجانده شده اند. بنابراین ، شما می توانید با استفاده از سیگنال ، دستگیرندگان سیگنال را برای این سیگنال ها تنظیم کنید ، و همچنین می توانید با فراخوانی افزایش ، این سیگنال ها را صریحاً تولید کنید.

تنظیمات سیگنال در فرآیندهای تخم ریزی که با تماس با توابع _exec یا _spawn ایجاد می شوند ، حفظ نمی شوند. تنظیمات سیگنال در فرآیند جدید به مقادیر پیش فرض بازنشانی می شوند.

الزامات

روالعنوان مورد نیاز
علامت

برای اطلاعات بیشتر سازگاری ، به سازگاری مراجعه کنید.

مثال

مثال زیر نحوه استفاده از سیگنال را برای اضافه کردن برخی از رفتارهای سفارشی به سیگنال SIGABRT نشان می دهد. برای کسب اطلاعات بیشتر در مورد رفتار سقط جنین ، به _set_abort_behavior مراجعه کنید.

معادل چارچوب. نت نت

کاربردی نیستبرای تماس با عملکرد استاندارد C ، از Pinvoke استفاده کنید. برای اطلاعات بیشتر ، به نمونه های فراخوانی پلتفرم مراجعه کنید.

مقالات آموزش فارکس...
ما را در سایت مقالات آموزش فارکس دنبال می کنید

برچسب : نویسنده : بهزاد فراهانی بازدید : 54 تاريخ : شنبه 12 فروردين 1402 ساعت: 19:48