UNIX环境高级编程习题——第一章

第一章习题

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

ls  .
ls  ..
ls  /.
ls  /..

图片描述

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

#include "apue.h"
int main(void)
{
    printf("hello world from process ID %ld\n",(long)getpid());
    exit(0);
}

$./a.out
hello world from process ID 851
$./a.out
hello world from process ID 854

(1)在第一次执行./a.out时,有另外的两个进程占用了id为852和853的进程,当./a.out结束以后,852和853也已经结束了,查找不到该进程执行的动作。再次执行,./a.out便占用了854进程。

1.3 在1.7节中,perror的参数是用ISO C的属性const定义的,而strerror的整型参数没有用此属性定义,为什么?
(1)stderror是根据errno值返回相应的出错信息,因此不会将指向错误信息的字符串指针的指向修改,因此stderror的参数不需要const。
(2)而perror接受的参数是字符串指针,就可能存在修改指向错误信息的字符串指针的指向,因此需要const参数限定此行为。

1.4 若日历时间存放在带符号的32位整型数中,那么到哪一年它将溢出?

    2^31/(6*60*24*365)=680年

1.5 进程时间存放的在带符号的32位整型数中,而且每秒为100时钟滴答,那么经过多少天后这个时间值将会溢出。

2^31/(60*60*24*100)=248天

你可能感兴趣的:(apue,unix,c)