Main BLOGGER
Google
WWW THIS BLOG
Thursday, April 06, 2006
 
Linux Longjmp

-----------Code------

#include <stdio.h>

#include <stdlib.h>

#include <setjmp.h>

 

jmp_buf env;

int i;

int max;

 

 

int main ()

{

  int j;

  max = 5050;

  i = 0;

  //longjmp here!!!

  j = setjmp(env);

  printf("j:= %d\n",j);

  if(i < max)

    {

     printf("i:= %d\n", i);

     i = i+j;

     longjmp(env, j+1); //jump to setjmp(env) and return j+1

     printf("Never reached\n");

    }

  else

    {

      printf("turns out 1+2+...+%d>=%d\n",j-1,i);

      exit(0);

    }

}

Result

rommel:~/longjmp> ./a.out

j:= 0

i:= 0

j:= 1

i:= 0

j:= 2

i:= 1

j:= 3

i:= 3

….

j:= 100

i:= 4950

j:= 101

turns out 1+2+...+100>=5050




<< Home

Powered by Blogger

Google
WWW THIS BLOG