现在的位置: 首页 > 综合 > 正文

notes 09-02 APUE

2013年04月05日 ⁄ 综合 ⁄ 共 1387字 ⁄ 字号 评论关闭

Echo $?可以输出程序执行的状态值

Main函数中参数argc和argv。Iso c和posix1都要求 argv[argc]是一个空指针,

Ateixt函数调用与注册相反

#include <stdio.h>

#include <stdlib.h>

void func1()

{

       printf("%d\n",printf("%d",printf("%d",5)+1)-1);

}

void func2()

{

       printf("%d\n",printf("%d",printf("%d",printf("%d",1)+2))+3);

}

int main()

{

       if(atexit(func1)!= 0)

       {

              printf("atexiterror\n");

              return-1;

       }

           if(atexit(func1) != 0)

    {

       printf("atexit error\n");

       return -1;

    }

   if(atexit(func2) != 0)

    {

       printf("atexit error\n");

       return -1;

    }

       exit(0);

}

静态编译的时候 正文段的大小变大,不会使用动态库


Setjmp是获取当前的环境,所以setjmp必须在longjmp之前调用,不然的话,longjmp就不会找到当时的 jmp_buf

#include <stdio.h>

#include <setjmp.h>

static jmp_buf env;

int func1()

{

       if(setjmp(env)== 0)

       {

       //     while(1);

              printf("setjmphas not jmp\n");

       }    

       else{

              printf("setjmpexecute\n");

              }

       return0;

}

int main()

{

       inti=0;

       func1();

       while(i!= 10)

       {

              if(i== 6)

              {

                     longjmp(env,1);

              }

              printf("mainexecute bian :%d\n",i);

              i++;

       }

return 0;

}

使用environ的时候,必须声明为外部变量extern char * environ

而且environ和argv是一样的最后一个指针是NULL

#include <stdio.h>

#include <unistd.h>

extern char ** environ;

int main()

{

       inti=0;

       for(;*(environ+i) != NULL;i++)

       {

              printf("%s\n",*(environ+i));

       }

       return0;

}

一般都是getenv函数来使用环境变量的(setenv)

抱歉!评论已关闭.