|
��������
setjmp, longjmp - ����������� �������� ����������
���������
#include <setjmp.h> int setjmp (env) jmp_buf env; void longjmp (env, val) jmp_buf env; int val;
��������
����������� ������� ������� ��� ��������� ������ � ����������, ����������� �� ����� �� ������ ������� ����������� �������.
������� setjmp ��������� ������� �������� ��������� � ������� env (��� jmp_buf ��������� �� ���������� ����� <setjmp.h>) ��� ������������ ������������� �������� longjmp. ��������� ������� setjmp ����� 0.
������� longjmp ��������������� ���������, ����������� ��� ��������� ������ setjmp � ��������������� ���������� env. ����� ���������� longjmp ���������� ��������� ������������ ���, ��� ����� ��������������� ����� setjmp ������ ��� ������ �������� val. �������, ��� � ���������� ����� ����������� � setjmp � longjmp �� ������ ���� �������� �� �������, ���������� setjmp.
� ������� ������� longjmp ���������� ������� ������� ��������. ���� ��� ������ longjmp �������� val ����� 0, setjmp ��� ����� ������ 1. ��� ����� ������ ���� ����������� �������� ������������ ������� �� ������� setjmp �� ��������������, �������� ����������� ���������� longjmp. �������� ���� ���������� �������� � ������ �������������� �������� �� setjmp, �����������, �� ��, ��� � � ������ ������ longjmp. �������� ��������� �������� ������������� ���������� �������, ��������� setjmp.
������
#include <setjmp.h> jmp_buf env; int i=0; main () { void exit (); if (setjmp (env) != 0) { (void) printf ( "�������� i ��� 2-�� �������� �� setjmp: %d\n",i); exit (0); } (void) printf ( "�������� i ��� 1-�� �������� �� setjmp: %d\n",i); i = 1; g(); /* ������������ �������� */ } g() { longjmp (env, 1); /* ������������ �������� */ }���������� ���������� ���� ��������� ����� ���������� � ����� C ����� ����������:
�������� i ��� 1-�� �������� �� setjmp: 0 �������� i ��� 2-�� �������� �� setjmp: 1
��. �����
signal(2).
���������������
���� ��� ��������� � ������� longjmp ���������� �������� env, �� ����������� setjmp, ��� ��������� �����
setjmp ��� � �������, �� ������� ��� ��������� �������,
�� ��� ������������� ���������� ����.
|