7.1 在Intel x86系统上,使用Linux,如果执行一个输出“hello world”的程序但不调用exit或return,则程序的返回代码13(用shell检查),解释其原因:
原因:printf的返回值变为main函数的返回值,不同的系统上编译此类程序由不同的终止码。
7.2 图7-3中的printf函数的结果何时才被真正输出?
当程序处于交互运行方式时,标准输出通常处于行缓冲方式,所以当输出换行符时,上次的结果才被真正输出。如果标准输出被定向到一个文件,而标准输出处于全缓冲方式,则当标准I/O清理操作执行时,结果才真正被输出。
7.5 C语言的typedef为处理终止程序定义了一个新的数据类型 Exitfunc,使用该类型修改atexit的原型
typedef void Exitfunc(void);
int atexit(Exitfunc *func);
7.7 在7.6节结尾处size命令输出结果中,为什么没有给出堆和栈的大小?
只有通过exec函数执行一个程序时,才会分配堆和栈。