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)