原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835

大家好,从这周开始学习apue《UNIX环境高级编程第三版》,在此,我要感谢网易的一个工程师朋友和室友,没有他们,我不会开始真正的学习这本书,希望大家以后开始慢慢进步。废话少说,直接上课后习题了。

UNIX高级编程第一章习题答案:

1.1在系统上验证,除根目录外,目录l和l l是不同的。

答:这个验证有很多方法可使用命令ls 、cd、vim等,目录.指向当前目录,目录..指向父目录,在根目录中这两个是相同的。首先是根目录

可见在根目录下,目录.和目录..都是指向本目录的。

结果显然易见。有兴趣可以使用vim .与vim..

1.2分析图1-6程序的输出,说明进程ID为852和853的进程发生了什么情况?

答:UNIX是多任务系统,在程序运行的同时其他两个进程也在运行,编程运行如下图所示

由上图可见进程PID是一直增大的,小水试图使用lsof  -p 15122去查询中间的那个进程,可是一无所获,因此可以判定这个进程在小水试图去抓它的时候已经结束了。为什么进程的PID一直在增大,会增大到什么程度?

1.3在1.7节中,perror的参数是用ISO C的属性const定义的,而strerror的整形参数没有用此属性定义,为什么?

答:因为perror的msg参数是个指针,perror就可以改变msg指向的字符串。然而使用限定符const限制了perror不能修改msg指针指向的字符串。而对于strerror,其错误号参数是整数类型,并且C是按值传递所有参数,因此即使strerror函数想修改参数的值也修改不了,也就没有必要使用const属性。

以我的理解是这样的:可以从两个函数的定义去理解

char  *strerror(int errnum);

void   perror(const char *msg);

strerror函数将errnum (通常就是errno值)映射为一个出错消息字符串,并返回此字符串的指针,而errno的值通常是不定的(可参考errno的规则),存在多种不同的errno,当然不能使用cons修饰符了。

而perror的作用基于error当前值,在标准错误上产生一条错误信息,首先msg它是指向error的,不能指向其他地方,不管当前error是何值,其内容是固定的,因此需要使用const。它首先输出msg所指向的字符串,然后是一个冒号,一个空格,接着是对应的errno值,最后换行符。

1.4若日历存放在带符号的32位整形数中,那么哪一年它将溢出?可用什么方法扩展溢出的浮点数,采用的策略是否与现有的应用相兼容?

答:首先确定起始时间为 T=1970年1月1日 00:00:00,然后是带符号的32位所存储的时间t=231/(60*60*24*365)=68.0962598年,所以溢出时间为T+t=1970+68=2038年。其溢出解决办法是将time_t数据类型定义为64位整形。

1.5若进程时间存放在带符号的32位整形中,而且每秒100滴答,经过多少天后该数溢出?

答:t=231/(60*60*24*100)=248.551348天。

最后送上格言:学习不能固步自封。。。(如有错误的地方请指正)

最新文章

  1. Linux VM acquisition
  2. 烦烦烦SharePoint2013 以其他用户登录和修改AD域用户密码
  3. &引用的问题
  4. 百度,你家云管家能靠谱点不?替你脸红!Shame on you!
  5. servler--请求重定向
  6. synopsys license maker
  7. Effective Java 学习笔记之第七条——避免使用终结(finalizer)方法
  8. postman参数为Json数据结构
  9. 队列queue(2):链表实现队列
  10. linux编译php gd扩展
  11. kafka简单回顾
  12. (NO.00004)iOS实现打砖块游戏(二):实现游戏主界面动画
  13. python自动化打开网页
  14. 【配置阿里云 I】申请配置阿里云服务器,并部署IIS和开发环境,项目上线经验
  15. IDEA 操作及快捷键总结
  16. [转]GDB-----2.watchpoint
  17. 搭建ssh框架项目(二)
  18. 理一下docker在各平台上的运行机制
  19. 如何在eclipse中安装angularjs插件
  20. 如何配置php客户端(phpredis)并连接Redis--华为DCS for Redis使用经验系列

热门文章

  1. 将Windows上的文件上传到Linux上
  2. springMVC+ibatis数据持久化入门级学习例子
  3. POJ 1258 Agri-Net(最小生成树,模板题)
  4. java核心技术记录之集合
  5. 编写高性能JavaScript【转】
  6. Java中转UTC时间字符串(含有T Z)为local时间
  7. lintcode: 把排序数组转换为高度最小的二叉搜索树
  8. 【mongoDB基础篇①】安装与常用操作语句
  9. phpmyadmin导入大sql文件失败解决办法
  10. login.java