1.exit函數
#include <stdlib.h>
void exit(int status)
void _Exit(int status)
#include <unistd.h>
void _exit(int status)
exit(0)與return(0)等價
2.atexit(void (*func)(void));
向進程註冊函數
7.4命令列參數
argv[argc]是一個null 指標。
7.5環境表
extern char **environ;
7.6C程式的儲存空間布局
使用size 可查看程式的大小
7.7共用庫
gcc -static test.c -o test
gcc -o test test.c
7.8儲存空間分配
#include <stdlib.h>
void *malloc(size_t size);//分配的空間不初始化
void *calloc(size_t size);//分配的空間初始化為0
void *realloc(void *ptr,size_t newsize);
注意:大多是實現分配的儲存空間比所要求的要稍大一些,額外的空間用來記錄管理資訊
不能釋放已經釋放了的塊。
7.9環境變數
#include <stdlib.h>
取環境變數
char *getenv(const char *name);
int putenv(char *str);//取name = value的字串,將其放到環境表中
int setenv(const char *name,const char *value,int rewrite);
int unsetenv(const char *name);
7.10 setjmp和longjmp
#include <setjmp.h>
int setjmp(jmp_buf env);
void longjmp(jmp_buf env,int val);
jmp_buf jmpbuffer;
不想讓值復原,可以用volatile,聲明為全域或靜態變數的值在執行longjmp時保持不變。
7.11 getrlimit和setrlimit函數
#include <sys/resource.h>
int getrlimit(int resource,struct rlimit *rlptr);
int setrlimit(int resource,struct rlimit *rlptr);
struct rlimit {
rlim_t rlim_cur;
rlim_t rlim_max;
}