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);

}

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

notes 09-02 APUE


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)


相关文章:

猜你喜欢
  • 2022-03-04
  • 2021-06-09
  • 2021-07-27
相关资源
相似解决方案