APUE-10
文章平均质量分 72
hellochenlu
这个作者很懒,什么都没留下…
展开
-
在信号处理函数中调用非可重入函数getpwnam
因为main函数和信号处理函数中都调用getpwnam函数,而在getpwnam函数中会调用malloc和free,如果主函数malloc之后收到SIGALRM信号进入信号处理函数,在信号处理函数里malloc然后free,而在信号处理函数调用free和main函数也在调用free时,malloc和free维护的数据结构就出现了损坏。 所以在信号处理函数中调用非可重入函数,则其结果是不可预知的。原创 2016-01-21 08:48:44 · 977 阅读 · 0 评论 -
setjmp和longjmp函数使用详解
非局部跳转语句---setjmp和longjmp函数。非局部指的是,这不是由普通C语言goto,语句在一个函数内实施的跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某一个函数中。 #include int setjmp(jmp_buf env); 返回值:若直接调用则返回0,若从longjmp调用返回则返回非0值 void longjmp(jmp_buf env,i转载 2016-01-21 09:30:08 · 446 阅读 · 0 评论