بررسی سيگنال ها

ژانویه 21, 2016

يک برنامه وقتي ميآيد در حافره بايد آنقدر محکم باشد که از بين نرود. يکي از عواملي که يک برنامه را متوقف ميکند و يا مي-
کشد ctrl+c است. )در محيط گرافيکال cut ( که وقتي به يک نرمافزار ميرسد آن را از بين ميبرد و ميکشد.
به همين دليل است که وقتي second pass را ميخواهد ctrl+c ميزنيم که ميکشد آن را و وارد م يش ود. ب ه ctrl+c م ي-
گوييم سيگنال. ما سيگنالهاي مختلفي داريم. که سه تا عکسالعمل ميتوانيم در مقابل هر سيگنال داشته باشيم:
)1 عکسالعمل نشان دادن Action
)0 Ignore
)3 Default
دو سيگنال معروفي که داريم يکي ctrl+c و ديگري Hang up )شماره 1( )ارتباط مخاطب با پروسس قطع شده است( است.
حالا اين فرمان را ميزنيم تا ببينيم چند تا سيگنال داريم.
[N.pardis@Lpi1~]$ kill -l
1. سيگنال ما داريم که لينوکس همه را support ميکند. که يک ي از آنه ا Hangup اس ت و interrupt )ش ماره 0( هم ان
ctrl+c است. Vim را نميتوان با ctrl+c کشت. هر سيگنال يک کد دارد. ما به وسيلهي trap يعنيفرمان trap براي سيگنال مي-
توانيم تله بگذاريم و جلوي اجرا شدنش را بگيريم. trap يکي از فرمانهاي داخلي bash است ميتوان به وس يله آن عک س العم ل
مناسب را در مقابل سيگنال اتخاذ نمود و توصيه ميشود دستور trap را در ابتداي script گذاشت. با اين فرم ان م يگ و ييم ه ر
وقت
[n.pardis@lpi1~]$ trap 'cal' 2
سيگنال شماره ) 0( يعني ctrl+c آمد تقويم را اجرا کن. يعني سيگنال 0 را اجرا نميکند و تقويم را اجرا ميکند.
اگر فرمان زير را وارد کنيم دوباره ctrl+c کار مي کند.
[n.pardis@lpi1~]$ trap '' 2

حالا اگر دو تا کوتيشن را به هم بچسبانيم و بعد ctrl+c را بزنيم م يبين يم ک ه اج را نم يش ود. وقت ي space بينش ان باش ند
يعني ctrl+c را بگيرد ولي هيچ کاري نکند.
و اگر دو تا کوتيشن به هم چسبيده باشنديعني ignore ميکند ctrl+c را. در بين دو کوتيشن ميتوانيم هر چي بگذاريم echo salam يا اجراييک نرمافزار. اگر خواستيم دوباره برگردانيم به حالت پيشفرض بين دو تا کوتيشن يک blank ميگذاريم.
براي ديدن منوآل signal که خيلي هم مهم است اين فرمان را بزنيد:
[n.pardis@lpi1~]$ man -a signal