PDA

View Full Version : سوال: مدیریت در پایان یافتن برنامه در صورت بروز خطایsegfaultو غیره



hootan
چهارشنبه 17 تیر 1388, 09:44 صبح
با سلام
من می خواهم در صورتی که برنامه بخواهدبا خطای segmentation fault یا abort یا EXIT_FAILURE یا مانند آن خاتمه پیدا کند. پیش از آن تابعی به صورت خودکار اجرا شود. آیا برای این کار راهی است؟
ممنون

PC2st
چهارشنبه 17 تیر 1388, 22:07 عصر
http://stackoverflow.com/questions/554138/catching-segfaults-in-c :لبخندساده:
در مورد abort هم که سیگنال SIGABRT رو تولید می‌کنه و برنامه بدون صدا زدن توابع مخرب نمونه‌ی اشیاء، به اتمام میرسه و برای handle کردن آن هم میشه از روش بالا استفاده کرد.

Nima_NF
چهارشنبه 17 تیر 1388, 23:23 عصر
در وبندوز تابع SetConsoleCtrlHandler را بررسی کنید، هرگاه برنامه به هر دلیل قصد خروج داشته باشد، شما می توانید با فراخوانی تابع مورد نظر خود، کد خود را قبل از بسته شدن اجرا کنید.



SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandlerFunc, TRUE);

//------

BOOL CtrlHandler( DWORD ctrlType )
{
switch( ctrlType )
{
CTRL_CLOSE_EVENT:
// ...
}
}