Ц Програмирање

ПОСИКС сигнали са Ц програмирањем

ПОСИКС сигнали са Ц програмирањем
Сигнал можемо дефинисати као активност која се покреће да упозори на операцију или нит кад год стигне за одређену значајну ситуацију. Кад год процедура или нит препознају сигнал, процедура или нит ће зауставити све што чини и предузети тренутне мере. У међупроцесној координацији сигнал може бити ефикасан. У овом водичу ћете проучавати руковаоце сигналом у Линуку кроз језик Ц.

Стандардни или регуларни сигнали:

Сигнал датотеке заглавља.х 'садржи сигнале који су у њему наведени као макро константа. Наслов сигнала почео је са „СИГ“, а претходи му кратки преглед сигнала. Према томе, сваки сигнал има различиту нумеричку вредност. Програмски код треба да користи име сигнала, а не неколико сигнала. Узрок томе је што број сигнала може варирати у зависности од система, али тумачење имена је стандардно. Испод су неки редовни сигнали са дефинисаном функционалношћу.

ПОГЛЕД:

Овај сигнал ће прекинути обраду. Сигнал СИГХУП се одбацује како би указао на раздвајање корисничког терминала, вероватно због прекида даљинске комуникације или прекида везе.

ЗНАК:

То ће пореметити процес. Сигнал СИГИНТ се прима кад год корисник унесе тастер ИНТР (обично Цтрл + Ц).

СИГКУИТ:

Зауставиће или напустити обраду. Сигнал СИГКУИТ се прима кад год корисник унесе тастер КУИТ (обично Цтрл + \).

СИГИЛЛ:

Покреће се када је издата недозвољена наредба. Сигнал СИГИЛЛ се креира сваки пут када се настоји извршити нежељена или привилегована команда. Кад год се стек прелије и машина има проблема са покретањем контролера сигнала, такође може бити креиран СИГИЛЛ.

СИГТРАП:

Позива се када се извршава нека инструкција замке трага. Сигнал СИГТРАП креира се наредбом тачке прекида и другом наредбом замке. Програм за отклањање погрешака користи такав сигнал.

СИГАБРТ:

Зове се Аборт сигнал. Сигнал СИГАБРТ креира се позивањем методе аборт (). Такав сигнал користи се за указивање на непрецизност коју уочава горе поменути код и бележи позив аборт ().

СИГФПЕ:

Изузетак за плутајуће тачке; Сигнал СИГФПЕ се производи када се догоди катастрофална математичка грешка.

СИГУСР1 и СИГУСР2:

Сигнали СИГУСР1 и СИГУСР2 могу се користити како желите. Корисно је за лаку међупроцесну интеракцију створити управљач сигналом за такве сигнале у апликацији која прима сигнал.

Подразумевано понашање сигнала:

За сваки сигнал постоји стандардно понашање или радња, а могуће је подесити подразумевано понашање помоћу функције руковаоца. Аутоматско понашање сигнала СИГКИЛЛ и СИГАБРТ не може се изменити или занемарити.

Термин: Завршиће операцију.

Језгро: Генерираће се основни думп документ и операција ће бити прекинута.

Игн: Процес би превидио сигнал.

Зауставити: Зауставиће операцију.

Наставак: Операција ће бити заустављена.

Руковање сигналом:

Процес преферира понашање у односу на сигнал када је потврђен. Процес се може понашати на следећи начин:

Сигнал се аутоматски одбацује када се занемари дефинисано понашање сигнала.

Користећи методе попут сигнала или преноса, код може регистровати функцију руковаоца. Зове се хватање сигнала од руковаоца.

Ако се сигнал не третира или занемарује, може доћи до стандардне акције.

Функцију руковања сигналом можете дефинисати као:

$ Инт сигнал () инт сигнум, воид (* функ) (инт))

Када обрада добије сигнал сигнал, метода сигнал () може позвати методу 'фунц'. Сигнал () враћа показивач на методу 'фунц' ако је напредан или се изузетак врати на еррно и -1.

Показивач 'фунц' може да има три вредности:

СИГ_ДФЛ: Ово је показивач на стандардну СИГ ДФЛ () методу, дефинисану у заглављу.х документ који се користи за добијање стандардног понашања сигнала.

СИГ_ИГН: Ово је референца на метод игнорисања СИГ ИГН (), наведен у заглављу.ж документ.

Кориснички дефинисани показивач методе руковаоца: Кориснички дефинисана метода руковаоца воид (*) (инт), подразумева да је повратна категорија воид и да је осамљени аргумент инт.

Направите сигнал нове датотеке.ц 'и у њега напишите испод кода за обраду сигнала.

Повежите сигнал.ц датотека са гцц.

Док је радио сигнал.ц датотеку, имамо бескрајну петљу која се изводи у главној методи. Притиском на ЦТРЛ + Ц покренуо је методу руковаоца, а извршење главне методе је заустављено. Обрада главне методе настављена је након постизања методе руковаоца. Када притиснете Цтрл + \, операција се прекида.

Сигнал Игноре:

За превид сигнала, створите датотеку 'сигнал.ц 'и у њу напишите испод кода.

Везати игнорисану.ц датотека са гцц.

Пусти сигнал.ц датотека. Додирните ЦТРЛ + Ц, креира се сигнал СИГНИТ; ипак, понашање је непримећено јер се метода руковаоца набраја у методу СИГ_ИГН ().

Поново региструјте руковаоца сигналом:

Да бисте поново регистровали обрађивач сигнала, креирајте нову датотеку за поновно регистровање.ц 'и у њега упишите доњи код:

Придружите регре.ц датотека са гцц.

Покрените поновну регистрацију.ц датотека. Док је први пут притиснут ЦТРЛ + Ц подигнут метод обрађивача, и обрађивач сигнала је поново регистрован на СИГ_ДФЛ. Током поновног притиска тастера ЦТРЛ + Ц, извршење је прекинуто.

Шаљите сигнале користећи Раисе ():

Направите датотеку 'пошаљи.ц 'и додајте доњи код. За слање сигнала на метод позивања користи се метода раисе ().

Повежите слање.ц датотека са гцц.

Процес користи методу подизања () за самостално преношење СИГУСР1 сигнала.

Шаљите сигнале користећи Килл ():

Додајте доњи код у 'раисе.ц '. Користите методу килл () за слање сигнала процесној групи.

Повежите повишицу.ц датотека са гцц.

Коришћењем методе килл () процес усмерава сигнал СИГУСР1 на горе поменуто.

Интеракција родитеља и детета:

Да бисте гледали интеракцију родитеља и детета, напишите доњи код у датотеку.

Повежите кому.ц датотека са гцц.

Форк () / метода генерише дете, враћа детету процес нуле и детету ИД родитељу.

Закључак:

У овом водичу видели смо како створити, обрадити, послати, занемарити, поново регистровати и користити сигнал за међупроцесну интеракцију у Линуку.

Замените тастере миша другачије за различити софтвер помоћу Кс-Моусе Буттон Цонтрол
Можда вам је потребан алат који би могао да промени контролу миша са сваком апликацијом коју користите. Ако је то случај, можете испробати апликацију ...
Преглед бежичног миша Мицрософт Сцулпт Тоуцх
Недавно сам читао о Мицрософт Сцулпт Тоуцх бежични миш и одлучио да га купи. Након што сам га неко време користио, одлучио сам да са њим поделим своје...
Екран Трацкпад и показивач миша АппиМоусе за Виндовс таблете
Корисницима таблета често недостаје показивач миша, посебно када су уобичајени за коришћење преносних рачунара. Паметни телефони и таблети на додир ос...