Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� CIT Forum CD-ROM

SETJMP(3C)

��������
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 ��� � �������, �� ������� ��� ��������� �������, �� ��� ������������� ���������� ����.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT