unix环境高级编程第七章习题的一些拙见

apue7.1:

这道题目书上给出了明确的解释,没有明确返回值的时候,这里用shell检查返回值的时候是随机的,在不同的机器上会有不同的结果,具体取决于栈中的内容。这道题目我还是想把书上的有张图上一下,要分清楚exit和_exit的区别!

unix环境高级编程第七章习题的一些拙见_第1张图片

这张图非常清晰的指出了exit函数和_exit的区别,这个据说是一个面试题,很显然,exit函数在返回到内核之前要进行一些清理工作,要执行用户自己定义的清理函数,和标准io库的清理函数,把所有流全部关闭,把在缓冲中的内容清洗到磁盘上,所以换话说,你如果直接调用_Exit或_exit的话,那么就不会再执行用户空间中的函数,直接去返回内核,那么在缓冲的内容有可能就没写到磁盘上。这个就是使用exit和_Exit或_exit的区别!

apue7.2:

这个题目貌似在书的前几张讲流的时候就有过比较详细的解释,如果是标准输出绑定到终端,那么可以认为这个流是行缓冲的,每次遇到换行符的时候就输出内容,但是如果标准输出被重定向到文件的时候,那么这个流就是全缓冲的,这个时候只有当程序结束,或者冲洗这个流的时候,才会将这个流中的内容写到磁盘上。

——————————————————————————————分割线2016.7.17

apue7.3:

这两个参数是用来传递命令行参数的,除此之外没有其他的方法可以传递次信息。

apue7.4:

可以将指针指向此数据单元,表示此指针指向一个空的单元,当这个指针发生解引用操作的时候,编译器就可以报错。

apue7.5:

typedef  static  void  ExitFuncType  (void);

ExitFuncType  myexit1;

ExitFuncType  myexit2;

主要考察基本的c语言能力。

————————————————————————————分割线2016.8.7

你可能感兴趣的:(unix,标准,c语言,函数,编程,apue)