main函数
int main(int argc, char *argv[]);
进程终止
正常终止
-
从main返回
-
调用exit
-
调用_exit或_Exit
-
最后一个线程从其启动例程返回
-
从最后一个线程调用pthread_exit
异常终止
-
调用abort
-
接到一个信号
-
最后一个线程对取消请求做出响应
exit(main(argc, argv));
- 退出函数
#include
void exit(int status); //先执行清理处理,然后返回内核
void _Exit(int status);//立即进入内核
#include
void _exit(int status);//立即进入内核
main函数返回一个整型值和用该值调用exit是等价的,exit(0)等价于return(0)
- 函数atexit
#include
int atexit(void (*func)(void));
进程可以登记多至32个函数,这些函数由exit自动调用,称为终止处理程序,并调用atexit函数来登记这些函数。
命令行参数
argc argv
环境表
extern char **environ;
环境指针
C程序的存储空间布局
-
正文段
-
初始化数据段
-
未初始化数据段(bss段)
-
栈
-
堆
共享库
存储空间分配
#include
void *malloc(size_t);
void *calloc(size_t);
void *realloc(size_t);
void free(void *ptr);
环境变量
#include
char *getenv(const char *name);
函数setjmp和longjmp
#include
int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int val);
函数getrlimit和setrlimit
#include
int getrlimit(int resurce, struct rlimit *rlptr);
int setrlimit(int resurce, const struct rlimit *rlptr);