You can actually use setjmp()/longjmp() to implement that kind of thing, it turns out. Here's but one example:
http://www.on-time.com/ddj0011.htm
I'm almost tempted to make an analogy with scheme's (call-with-current-continuation) here, but I think that might be pushing it.