函数setjmp,longjmp跟sigsetjmp,siglongjmp

函数setjmp,longjmp和sigsetjmp,siglongjmpint sigsetjmp(sigjmp_buf env,int savemask)返回:若直接调用

函数setjmp,longjmp和sigsetjmp,siglongjmp

int sigsetjmp(sigjmp_buf env,int savemask);

                                                      返回值:若直接调用则返回0,若从siglongjmp调用返回则返回非0值;

int siglongjmp(sigjmp_buf env,int val);

setjmp和longjmp的使用如下:


 

也可以用在sleep函数中:

 


sigsetjmp和siglongjmp使用基本相同,只是siglongjmp比setjmp多一个参数,若savemask为非0值,则sigsetjmp在env中保存进程的当前屏蔽字。若调用siglongjmp时,如果带非0 savemask的sigsetjmp调用已经保存了env,则siglongjmp从其中回复保存的信号屏蔽字。