当前位置: 技术问答>linux和unix
困惑:setjmp()和longjmp()
来源: 互联网 发布时间:2014-11-12
本文导语: 哪位帮忙看一下这段程序: #include #include #include jmp_buf position; main() { int goback(); …… /*保存当前堆栈环境*/ setjmp(position); signal(SIGINT,goback); domenu(); …… } goback() { ...
哪位帮忙看一下这段程序:
#include
#include
#include
jmp_buf position;
main()
{
int goback();
……
/*保存当前堆栈环境*/
setjmp(position);
signal(SIGINT,goback);
domenu();
……
}
goback()
{
fprintf(stderr,"nInterruptedn");
/*跳转回被保存的断点*/
longjmp(position,1);
}
position是什么?是地址吗?还是……
longjmp跳回到主程序的哪里?
#include
#include
#include
jmp_buf position;
main()
{
int goback();
……
/*保存当前堆栈环境*/
setjmp(position);
signal(SIGINT,goback);
domenu();
……
}
goback()
{
fprintf(stderr,"nInterruptedn");
/*跳转回被保存的断点*/
longjmp(position,1);
}
position是什么?是地址吗?还是……
longjmp跳回到主程序的哪里?
|
恢复以前的运行环境,
到setjmp处
到setjmp处