原文网址: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天。

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

【转】apue《UNIX环境高级编程第三版》第一章答案详解的更多相关文章

  1. APUE(unix环境高级编程)第三版---first day---部署书中实例的运行环境(apue.h)

    操作环境:RHEL7.0 部署apue.h实例运行环境 1.下载头文件src.3e.tar.gz 2.解压 tar zxvf src.3e.tar.gz 3.创建普通用户(我仿照书上创建的sar用户) ...

  2. Linux - Unix环境高级编程(第三版) 代码编译

    Unix环境高级编程(第三版) 代码编译 本文地址:http://blog.csdn.net/caroline_wendy 时间:2014.10.2 1. 下载代码:http://www.apuebo ...

  3. Unix环境高级编程第三版中实例代码如何在自己的linux上运行的问题

    学习Linux已经有2个月了,最近被期末考试把进度耽误了,前几天把Unix环境高级编程看了两章,感觉对Linux的整体有了一些思路,今天尝试着对第一章涉及到的一个简单的交互式shell编译运行一下,结 ...

  4. 《UNIX环境高级编程第三版》apue.h等源码文件的编译安装

    操作系统:Ubuntu 12/14 1.下载书中的源代码:点击下载 2.编译 tar -zxvf *.tar.gz cd ./apue.3e make 报错: can,t find -lbsd 解决办 ...

  5. Linux - Unix环境高级编程(第三版) 源代码编译(即头文件apue.h如何使用问题)【转】

    本文转载自:http://blog.csdn.net/hadas_wang/article/details/43203795 1. 下载代码:http://www.apuebook.com/code3 ...

  6. 《UNIX环境高级编程(第3版)》

    <UNIX环境高级编程(第3版)> 基本信息 原书名:Advanced Programming in the UNIX Environment (3rd Edition) (Addison ...

  7. unix环境高级编程基础知识之第一篇

    陆陆续续看完了圣经第一章,熟悉了unix的整个编程流程,c语言的用处在这里得到伸张. 从unix的体系结构,原来操作系统包括内核及一些其他软件,我们常常误称为linux内核为操作系统,这俨然成为一种共 ...

  8. unix环境高级编程第三章笔记

    文件描述符 1.文件描述符的概念 对于内核而言,所有打开的文件都会用一个文件描述符来引用,打开或和创建一个新文件的时候,内核会给进程返回一个文件描述符,而当使用read write时,可以使用这个文件 ...

  9. UNIX环境高级编程-第三章习题

    1,当读写磁盘文件时,read,write等函数确实是不带缓冲机制的吗?请说明原因. 答:所有磁盘I/O都要经过内核的块缓存区(即内核的缓冲区高速缓存).唯一例外的是对原始磁盘设备的I/O,但是我们不 ...

随机推荐

  1. PHP对XML文件操作类讲解

    <?phpclass XML{    private $dom;        function __construct ()    {        $this->dom = new D ...

  2. 【锋利的JQuery-学习笔记】添加提示图片

    效果图: hot图片: (注意:这个图标本身就有抖动效果的,并不是由于标签<del>而具有抖动效果) 周期性抖动,起到提示的作用 html: <div class="jnC ...

  3. hdu 1242 Rescue(BFS,优先队列,基础)

    题目 /******************以下思路来自百度菜鸟的程序人生*********************/ bfs即可,可能有多个’r’,而’a’只有一个,从’a’开始搜,找到的第一个’r ...

  4. hdu 4465 Candy 数学

    思路:易知结果为 ∑(n-k)*C(n+k,k)*(p^(n+1)*q^k+q^(n+1)*p^k). 注意不能直接算,注意点技巧!!!看代码 代码如下: #include<iostream&g ...

  5. Android中XML格式数据的简单使用

    源码: package com.wangzhu.demo; import java.io.IOException; import java.io.StringWriter; import javax. ...

  6. XCODE 出现 The operation couldn't be completed.(LaunchServicesError error 0.)错误修复

    XCODE 出现 The operation couldn't be completed.(LaunchServicesError error 0.)错误修复   XCODE 出现 The opera ...

  7. Project Euler 93:Arithmetic expressions 算术表达式

    Arithmetic expressions By using each of the digits from the set, {1, 2, 3, 4}, exactly once, and mak ...

  8. SaaS系列介绍之十二: SaaS产品的研发模式

    1 产品研发模式慨述 产品研发模式是企业战略的重点.产品研发路线决定了一系列的管理手段和团队建设问题.也是企业的整理策略和经营思路.产品研发模式贯穿着整个产品的生命周期,从市场调研.立项.需求分析.慨 ...

  9. GDB笔记

    GDB是在Linux命令行下对C/C++的程序进行调试常用的一个命令,现将平时记录在本子上的笔记整理如下: 一.断点 断点类型有breakpoints, watchpoints, catchpoint ...

  10. Hibernate逍遥游记-第5章映射一对多-02双向(<set>、<key>、<one-to-many>、inverse、cascade="all-delete-orphan")

    1. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hi ...