[UNIX环境高级编程第二版]读书笔记7章

7.1  null
7.2  当内核执行C程序时(使用exec函数),调用main前先调用一个特殊启动例程。可执行程序文件将该例程指定为起始地址。例程从内核取得cmd参数和环境变量,然后启动main。
7.3  三个函数正常终止一个程序。_exit和_Exit立即进入内核,exit先执行一些清理(执行各终止处理程序,关闭所有标准I/O流等)。  exit(0);等价于return (0);
     int atexit(void (*func) (void);     可以登记32个exit handler,同一函数可以多次注册。
7.4  ISO C和POSIX.1都要求argv[argc]是一个空指针。
7.5  每个程序都会收到一张环境表。与参数表一样也是字符指针数组。extern char **environ;
7.6  从历史上讲,C程序组成包含:(使用size命令可以查看各个段的长度。)
     正文段:CPU执行的机器指令部分。
     初始化数据段:程序中需明确赋初始值的变量。
     非初始化数据段:出现在任何函数外的C声明long sum[1000];将使变量存放在此段中。
     栈:自动变量,每次调用函数需保存的信息。
     堆:动态存储分配。
7.7  动态链接可以减少文件大小。默认是动态,比如cc hello.c,如果要改成静态编译cc -static hello.c
7.8  动态分配内存。malloc,calloc,realloc,alloca(stack)。
7.9  char *getenv(const char *name);环境变量操作
     int putenv(char *str);
     int setenv(const char *name, const char *value, int rewrite);
     int unsetenv(const char *name);
7.10 在C语言中,goto语句无法跨函数。
     int setjmp(jmp_buf env);
     void longjmp(jmp_buf env, int val);
7.11 每个进程都有资源限制,其中一些可以用setrlimit和setrlimit查询和更改。
7.12 小结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值