Моят изход (състояние) с setjmp un longjmp

Проблемът е - трябва да внедря собствения си изход (статус) с setjmp и longjmp. Може би някой може да даде някои насоки?


person Jānis Gruzis    schedule 03.11.2012    source източник
comment
Какво опитахте?   -  person Some programmer dude    schedule 03.11.2012
comment
@JoachimPileborg Не съм опитвал нищо, тъй като единственото разрешено изпълнение е с setjmp/longjmp и наистина не мога да си представя как да създам решение от тези функции. Е, това, което направих, е, че потърсих реализация на изход в изходния код на ядрото, но имаше много неща, които вероятно правят същото, но с различни методи. (По-точно гледах _exit())   -  person Jānis Gruzis    schedule 03.11.2012
comment
Може да искате да прочетете това: stackoverflow.com/q/1733649/694576   -  person alk    schedule 03.11.2012


Отговори (1)


Единственото решение, за което се сещам в момента, е да извикам setjmp рано в main и след това да създам MyExit функция, която прави longjmp към setjmp в main и прави return с някаква стойност (осигурена от longjmp извикването).

person Some programmer dude    schedule 03.11.2012
comment
Това изглежда като валидно решение, не забелязах, че мога да поставя макроси в основната функция. Вероятно това е мястото, където мога да поставя setjmp и да контролирам връщането в случай на скачане назад. Благодаря ти. - person Jānis Gruzis; 03.11.2012
comment
За какви макроси говориш? - person Barmar; 03.11.2012
comment
Знам какво са макроси, просто не виждам какво общо има с този въпрос или отговор. setjmp() е функция (или може да се третира така, сякаш е). - person Barmar; 03.11.2012
comment
@Barmar Ако поставите макроси в началото на main (което съдържа setjmp и други конструкции), можете да се върнете в началото с myExit и да върнете ненулев код, върнат от setjmp. Работата е там, че в началото мислех, че трябва да направя това без макроси. - person Jānis Gruzis; 03.11.2012