2012年2月28日

全面了解setjmp与longjmp的使用

摘要: 将对setjmp与longjmp的具体使用方法和适用的场合,进行一个非常全面的阐述。另外请特别注意,setjmp函数与longjmp函数总是组合起来使用,它们是紧密相关的一对操作,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,才能按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理。 与goto语句的作用类似,它能实现本地的跳转 这种情况容易理解,不过还是列举出一个示例程序吧!如下:void main( void ) { int jmpret;jmpret = setjmp( mark ); if( jmpret == 0 ) { // 其它代码的执... 阅读全文

posted @ 2012-02-28 16:56 Richard.FreeBSD 阅读(240) 评论(0) 推荐(0) 编辑

fdopen和popen

摘要: popen:让进程看起来像文件#include<stdio.h>#include<stdlib.h>int main(){ FILE *fp; char buf[100]; int i=0; fp=popen("who|sort","r"); //打开一个命令,因为是只读"r",所以是要读取命令的输出 while(fgets(buf,100,fp)!=NULL) printf("%3d %s",i++,buf); pclose(fp); return 0;}复制代码$ gcc popende 阅读全文

posted @ 2012-02-28 16:42 Richard.FreeBSD 阅读(898) 评论(0) 推荐(0) 编辑

__P macro

摘要: > I have been reading the OpenBSD source code and have been running> across some structures||Macros i'm not understanding. Where would i> look for more explanition about the __P Macros. This is historical code... Old pre-ANSI compilers didn't support prototypes for functions. __P(X) 阅读全文

posted @ 2012-02-28 15:18 Richard.FreeBSD 阅读(223) 评论(0) 推荐(0) 编辑

导航