学习apue-第一章习题

## 第一章习题

目录.和目录..的不同

在根目录/下,...都是根目录,在其他目录,.是该目录,..是该目录的上一级目录

一个程序启动两次,进程id变化了

系统维护一个进程id的表,分配和回收进程id

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

#include <string.h>
char * strerror(int errnum)

#include <stdio.h>
void perror(const char *msg)
  • strerror是根据errnum(int类型)返回相应的出错信息,因此不会将指向错误信息的字符串指针的指向修改,因此strerror的参数不需要const
  • perror接受的参数是字符串指针,就可能存在修改指向错误信息的字符串指针的指向,因此需要const声明限定此行为

若日历时间存放在代符号的32位整型数中,那么到哪一年它将溢出? 可以用什么方法扩展溢出浮点数?采用什么策略与现有应用兼容?

  • 起始时间1970-01-01 00:00:00,带符号的32位最大时间231/(60*60*24*365) second = 68.0962598 year,溢出时间 1970 + 68 = 2038
  • 溢出解决办法: 将time_t数据类型定义为无符号32位int 或 有符号64位int

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

  • 231/(606024*100)=248.551348 day