第一章习题
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/(06*60*24*365)=680年
1.5进程时间存放的在带符号的32位整型数中,而且每秒为100时钟滴答,那么经过多少天后这个时间值将会溢出。
2^31/(60*60*24*100)=248天